SignedAngleで角度を取りたいのですが、X軸で正しい数値を取ることが出来ません
C#
1Vector3 pos = obj.position - transform.position; 2 pos.y = 0f; 3 float direction = Vector3.SignedAngle(transform.forward, pos, transform.up);
上記のスクリプトでY軸の角度を取ることは出来たのですが
X軸の場合、pos.x = 0f として特定の軸を固定した場合
例えばオブジェクトをY軸回転させた場合、正しい数値が取れなくなってしまいました
SignedAngleを使ってオブジェクトのY軸回転に影響を受けずにX軸の角度を取りたい場合どのようにすればよいのでしょうか
X軸の角度、Y軸の角度とはなんですか?
プレイヤーキャラクターの正面に対してどの方角に敵が居るのかを調べる場合
pos.x = 0
Vector3.SignedAngle(transform.forward, pos, transform.up)
で問題なく取得出来たのですが
プレイヤーキャラクターから見た敵の高さの角度を取る場合
Vector3.SignedAngle(transform.forward, pos, transform.left)
でいけるかと思ったのですが正しい数値を取ることが出来ませんでした
pos.x = 0 とした場合これはワールド座標なので
キャラクターが方向転換すると機能しなくなることに気が付きました
しかしこれをどのように対処すればよいのか分かりませんでした
「角度」というのは角の大きさを表す量です。
あなたの言う「高さの角度」とは
どこにできる角の大きさですか?
またはどこを回転軸としてどこがどこに移動するときの回転角ですか?
とはいえ、これが言語化できないからそもそも求められないのだと思うので、
図示してもらうのが一番手っ取り早いです。
(forwardとrightが成す平面に対する仰角かなとは思っているのですが)
https://answers.unity.com/questions/1726312/correct-use-of-signedangle.html
こちらのフォーラムにある様にSignedAngleでは軸に対するロール角度が正しく取れないという状況で悩んでいました
アルファアンサーによる回答によって解決することができました
説明不足によりお手数おかけして申し訳ありませんでした
解決したようで何よりです
あとから見る人のため、ご自身で回答つけてベストアンサーにしてください。
回答1件
あなたの回答
tips
プレビュー