[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
825(1): 2017/12/12(火)18:36 ID:w86KIWp6(1/4) AAS
>>807 >>808
>>809
ありがとうございます!
両方やってみました
Quaternion Q;
Vector3 axis, Vdeg, Vrad;
float angle, t;
Rigidbody rb;
void Start () {
rb = GetComponent < Rigidbody > ();
Vdeg = new Vector3(45, 30, 0);
Vrad = new Vector3(45, 30, 0) * Mathf.Deg2Rad;
Q = rb.rotation;
}
826(2): 2017/12/12(火)18:37 ID:w86KIWp6(2/4) AAS
void FixedUpdate () {
t = Time.time;
if (t == 0) {
rb.angularVelocity = Vrad;
} else if (t == 1.0f) {
Debug.Log ("t=" + t);
Debug.Log ("angularVelocity:" + rb.rotation.eulerAngles);
rb.angularVelocity = Vector3.zero;
//angle = Vrad.magnitude * Mathf.Rad2Deg;
//axis = Vrad.normalized
angle = Vdeg.magnitude;
axis = Vdeg.normalized;
rb.rotation = Quaternion.AngleAxis (angle, axis);
Debug.Log ("AngleAxis:" + rb.rotation.eulerAngles);
rb.rotation = Quaternion.Euler(Vdeg);
Debug.Log ("Euler1:" + rb.rotation.eulerAngles);
rb.rotation = Q * Quaternion.Euler(Vdeg);
Debug.Log ("Euler2:" + rb.rotation.eulerAngles);
rb.rotation = Quaternion.Euler(Vdeg) * Q;
Debug.Log ("Euler3:" + rb.rotation.eulerAngles);
}
}
827(2): 2017/12/12(火)18:41 ID:w86KIWp6(3/4) AAS
結果です!
angularVelocity = new Vector3(45, 30, 0) * Mathf.Deg2Rad
を入力すると、
?angularVelocity:Vector3(42.4, 37.4, 15.0)
1秒ピッタリで止めるには、FixedUpdate内でないとダメのようですね
Invoke("Stop", 1.0f)で呼び出すと、
angularVelocity:Vector3(43.1, 38.6, 15.7)と
1フレーム分くらいの遅延が生じる模様・・・
?AngleAxis:Vector3(42.4, 37.4, 15.0)
?Euler1:Vector3(45, 30, 0)
?Euler2:Vector3(45, 30, 0)
?Euler3:Vector3(45, 30, 0)
angularVelocityをEulerでQuaternionに入れちゃうと、
角速度による回転結果のQuaternionと少し違うようです・・・
AngleAxisでQuaternionに入れる方が正しいみたいですね
828: 2017/12/12(火)18:52 ID:w86KIWp6(4/4) AAS
>>816
回転が勝手に減速する話は本当ですか?
AngularDrag = 0にしてない・・・とかではなくて??
RigidbodyをangularVelocityやAddTorqueで回転させて、
1秒ごとにangularVelocityを表示させても、
回転速度は落ちてないようなのですが・・・
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.028s