お世話になっております。
Quaternionの回転についての質問です。
混乱を避けるため、ここではtransform.up = Y軸とさせて下さい。
姿勢がx軸で傾いた状態(斜め上の空を見上げている状態、斜め下の地面を見下ろしている状態など...)で、その姿勢を崩さずに、Y軸のみをあるオブジェクトの方向に回転させたいです。
例えば、以下のサイトではdirectionのYを0に設定することによって、地面にdirectionを投影してY軸のみの回転を実現しています。
https://gomafrontier.com/unity/2883
C#
1var direction = targetPosition.value.position - transform.position; //向きたい方向 2direction.y = 0; 3transform.rotation = Quaternion.LookRotation(direction, transform.up); //上記の方向へ回転
ですがこの方法はx軸の回転が0°であることが前提の方法だと思います。
同様にdirectionのzを0に設定することによっても、正面の壁にdirecitonを投影してY軸の回転を実現できると思います。↓↓↓↓↓
この方法もx軸が90°又は -90°であることが前提の方法だと思います。
x軸が30°でも45°でも-60°でも、その角度のPlaneにdirectionを投影して、Y軸のみの回転を実現するいい方法はあるでしょうか?
質問とは少し趣旨が違いますが、イメージ的には「あらゆる角度の地面(壁)にいても、その地面を這ってPlayerに突っ込んでくる虫」みたいなものを作成したいと考えています。
移動はAdd.Forceで行っているのでtransform.rotationで回転させているのですが、水平な地面ならともかく、壁(60°だったり90°だったり)に引っ付いていた場合に良い感じPlayerに向かってくれなくて困っています。

回答1件
あなたの回答
tips
プレビュー