左右の移動の角度を別々に取得したい(Vector3.Angle)

実現したいこと

Unityにて見下ろし型のガンシューティングを作っています。
プレイヤーは射程範囲内の最寄りの敵の方向を向いて銃を撃つのですが
その際に、向いている方向に応じて、キャラの移動モーションを切り替えたいと考えています。
例えば敵が左にいた場合、プレイヤーは左を向き、入力は上を入れると、プレイヤーは右歩きのモーション
敵が上にいた場合、プレイヤーは上を向き、入力は上を入れると、プレイヤーは前方向のモーション
といった具合です。

発生している問題と質問

そこで、向いている方向のベクトルと移動方向のベクトルの角度を取ればいいと考え
float angle = Vector3.Angle(direction, delta);
(directionは向いている方向のベクトル、deltaが移動方向のベクトル)とし、
floatが45~135度は左歩き、angleが225~315度は右歩きとなるようにコードを描いたのですが
敵に対して左方向も右方向に移動した際、ともに100度ほどの値になり、
両方ともに左歩きが再生されてしまいました。
恐らく、最小の差を取ろうとしているかと思うのですが、
このような場合はVector3.Angleではなくどのようなやり方で取得するのがよいでしょうか
何卒宜しくお願い致します。

コメントを投稿

0 コメント