お世話に成ります。
Unityの物理エンジンPhysxを使っています。UnityPhysicsじゃない方です
掲題の通り、RigidBodyを持つオブジェクトに対して姿勢制御を行いたいのですが
剛体が効いた状態のRigidbodyを生かした状態で姿勢制御を行うとしたら2通りしか無さそうな事が分かりました。
一つはRigidBody.MoveRotation(もしくはRigidBody.Rotation)に値を与えると言う方法でした。
こちらは簡単で、何も考えず、LoockRotation等の値を利用してRotation値を与えれば解決できると感じました。
もう一つはAddTorque(angularVelocity)に値を与えて角速度を得ると言う物でした。
現在検証の為、角速度で実現できるか試しています。
角速度を使って姿勢制御を行いたいのですが余り文献が無く上手く制御できません。
自分なりに書いてみたスクリプトを記載します。
何となく目的の方向に向くのですが、何となくで、しかもAtan2の-πと+πの境(つまり真後ろ)に目的が存在すると、-πと+πの間を行き来して真後ろを向けてプルプルした状態で安定(?)してしまいます。
目的の方向に向くための角速度を得る方法をどなたかご存知でしたらご教示願えますでしょうか?
宜しくお願いいたします。
C#
1 var d = ターゲット.position - 自分.position;//worldvector 2 var inv = math.inverse(自分.rotation); 3 var localpos = math.mul(inv, d);//local position 4 5 var atx = math.atan2(localpos .y, localpos .z);//仰角 6 var aty = math.atan2(localpos .x, localpos .z);//方位角 7 rigidbody.angularVelocity = new float3(atx,aty,0);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/15 09:45
2021/10/15 10:16