2D横スクロールでY軸回転だけで砲塔を回転させたい。

稚拙な質問かと思いますが、どうにも解決ができないので質問させてください。

現在、サイドスクロールのゲームを制作しておりまして、回転砲塔が主人公に角度を狙ってくるような処理をしたいと思っています。

Spriteを張り付けた奥行きのない2Dなので、回転はY軸での回転となります。

で、自分(砲塔)→主人公座標への Find look at Rotation を分解して、
砲塔のSetactorRotationに、Y結果だけをつなぎましたが、

Xがプラス方向の時には追従しますが、

Xがマイナス方向の時には、追従をしません。

とても、何か基本的なことを間違っているのではないかという感じはするのですが、どうしても解決できませんでした。

絵が反転することなく、Y軸追従をする処理を解る方がいらっしゃいましたら、どうかご教授いただけると幸いです。

よろしくお願いします。

Rotatorの実装はQuarternionであり、Quarternionの作用により、RotationのPitchは-90~+90の間でしか動作しません
反対側を向く際は、Yawを使用して向く形になります
Rotationの特定要素のみ抜き出して使う(オイラー角として扱う)のは、こういう不具合を呼ぶので、基本的に避けるべきです

FindLookAtRotationに入れる前に、同一平面上で扱えるようにVectorを直しましょう
今回の場合はXZ平面に揃えるため、(1.0, 0.0, 1.0)のVectorを掛けます

その結果をFindLookAtRotationに入れ、出てきたRotatorをそのまま使用してください

2 Likes

素早いご回答ありがとうございます!

なるほど!平面稼働にするために揃えてから行うのですね!
早速試してみた所、正常に動作しました。

長い間悩んでいましたが、解決しました!ありがとうございました!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.