ここから本文です

Unityでゲーム作ってるんですが

her********さん

2012/10/723:24:58

Unityでゲーム作ってるんですが

地面の上を自由に動ける自分のキャラクターから攻撃手段として弾を発射させたいのですが

var bulletPrefab : GameObject;
var initialVelocity : float;

function Update () {
if(Input.GetButtonDown("Fire1")){
var bullet : GameObject = Instantiate(bulletPrefab, transform.position, transform.rotation);

var direction : Vector3 = transform.forward;
bullet.rigidbody.velocity = direction * initialVelocity;


}


}

のコードを自分のキャラクター、または自分のキャラクターの傘下に作成した空のゲームオブジェクトに適用すると、弾は発射されるのですが、意図した位置から発射されません。
自分のキャラクターが向いている方向に常に弾を発射したいのですがどこを修正すればよいのでしょうか


既存のゲームでいうとモンスターハンターの弓やボウガン系の弾の発射みたいにしたいです。

補足直接見てもらった方が状況が分かりやすいと思うのでよかったら見てください
矢印キーで移動、左クリックで弾発射です

http://yahoo.jp/E8I8Au

閲覧数:
1,812
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

ゑふさん

編集あり2012/10/815:27:46

>補足へ

拝見しました。
原因としては、空(天球?)や地面を作る為のオブジェクトに、「Collider」が付いている事です。
特に「地上」というシーンでは、地面を球体をつぶした物で代用しているようですが、当たり判定である「Sphere Collider」がそのまま残っています。
これによって、キャラの座標で発生した弾が、地面の当たり判定と空の当たり判定に弾かれて、あらぬ方向に飛んでいくという状況になっています。
なので、「地上」のシーンに限って言えば、オブジェクト名「Sphere」(空を表している球体)と、「Mainfloor」(地面を表している球体)の「Sphere Collider」を削除すれば、弾の挙動を妨害する物は無くなります。

それと、空の表現方法ですが、天球のオブジェクトでは無く、カメラに「Sky Box」を追加した方が良いかと思います。
また、地面に付いても、できれば元々平面のオブジェクトを利用した方がいいかと思います。




前回の回答では、お力になれず、すいませんでした。
少し思い付く点がありましたので、もう一度回答させて頂きます。

さて、ご質問のコード自体には、特に直すべき点は無いかと思います。
実際に動かしてみましたが、おそらく質問者さんの意図するであろう動きをしました。
なので、やはり直すべきはプレハブやキャラオブジェクトの設定ではないでしょうか?

まず、弾は「Rigidbody」になっているかと思いますが、弾の移動速度によっては自由落下の方が圧倒的に速かったりするので必要が無ければ「Use Gravity」のチェックを外しておくと、弾は直進します。
あるいは、「Constraints」で移動方向や回転方向を抑制していると、好きな方向に弾を飛ばせないので、ここのチェックも全て外しておいた方がいいでしょう。
もちろん自キャラとの接触を防ぐために「Collider」の「Is Trigger」のチェックも外しておきましょう。

また、弾の出現座標が意図した場所で無い可能性として、もう1つ考えられるのは、弾自体の中心座標や角度が見た目と違う場所になっている場合が考えられます。
特に、他のモデリングツールで作成したモデルは、中心座標のとり方やXYZの座標系がUnityと違っている事がよくあります。
簡単に調べるには、シーンの中に自キャラと弾を両方配置して、それぞれの座標を0,0,0にして重ねてみれば、それぞれの中心点がどこにあるかが解ります。

さらに、もう1つ、かなり低い可能性として考えられるのは、このスクリプトを持ったオブジェクトが移動していない、という事です。
自キャラ(親)のオブジェクトの中に操作可能な見た目上の自キャラ(子)がいて、画面上で移動しているのは子だけで、親は最初の座標から動いていない場合、弾の出現座標が意図しないものになるでしょう。
もし、自キャラの移動に関係なく、弾の出現地点が変わらず、ある一点から出続けているなら、この疑いがあります。

>弾は発射されるのですが
>意図した位置から発射されません
の2点について、もう少し具体的な情報があれば、何か解るかも知れません。(発射されるが、移動方向や速度は意図したものか?出現座標は、キャラから見てどの位置か?あるいは、常に同じ位置?出現位置は移動している?などなど)

質問した人からのコメント

2012/10/8 15:32:20

感謝 できました、ありがとうございます!
本当に感謝です

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる