オブジェクトを向いている方向に真っ直ぐに飛ばす方法
敵が攻撃する時に、敵が向いている方向に対してまっすぐに攻撃を飛ばす方法です。
使用したツール / 環境
- Unity 2017.3.1f1
やりたいこと
敵と言ってますが、それはゲームでの使用シーンを想定していたためで、今後は”オブジェクト”と表現することにします。このオブジェクトを”向いている方向”に動かします。オブジェクトが向いている方向というのがポイントです。
オブジェクトが向いている方向とは
下記ドキュメントにも記載があるのですが、特に意識しなければローカル軸に対しての移動となります。
docs.unity3d.com
シーンビューだとこのようにオブジェクトから矢印がでていて、 赤→x軸、緑→y軸、青→z軸となっています。これはワールド軸になります。
オブジェクトの動かし方について
まず、デフォルト状態でZ軸方向への動かしてみましょう。
z軸方向への移動
このコードを使用すればGIFのように進みます。
z軸方向への移動
void Update() { this.transform.Translate(Vector3.forward * Time.deltaTime * speed); }
speedは自分で設定してください。Vector3.forwardを指定することでz軸方向へ進んでいるので、x軸・y軸へ動かしたい場合は下記の様になります。
x軸方向への移動
void Update() { this.transform.Translate(Vector3.right* Time.deltaTime * speed); }
y軸方向への移動
void Update() { this.transform.Translate(Vector3.up * Time.deltaTime * speed); }
軸と違う方向に動かす方法
今、オブジェクトのRotationは下記の様になっています。
これを変更します。
その上で、"Vector3.forward"を使用すると
先程と違う方向に進んでいます。これは、ワールド軸ではなくローカル軸にそって動いているためです。このあたりを意識しないと思った方向に進まないとか起こるかもしれません。