前提
キューブ型のオブジェクトで、サイコロを高速でランダムに回転させるような表現をしたいのですが、
Random.rotationで実装しようとすると、Time.deltaTimeを掛けれないです。
Updateによるデバイス間の差異をなくすため、Time.deltaTimeを掛けたいのですが、
Random.rotationでは実装不可能でしょうか?
また、目的の代替案があれば教えていただきたいです。
該当のソースコード
C#
1 Transform m_transform; 2 3 void Start() 4 { 5 // キャッシュした方が負荷がかからないはず 6 m_transform = transform; 7 } 8 9 void Update() 10 { 11 m_transform.localRotation = Random.rotation; 12 }
これに、Time.deltaTimeを掛けると型が違うので、エラーになります。
C#
1m_transform.localRotation = Random.rotation * Time.deltaTime;
error CS0019: Operator '*' cannot be applied to operands of type 'Quaternion' and 'float'
試したこと
C#
1 void Update() 2 { 3 float speed = 100; 4 Vector3 axis = Vector3.one; 5 m_transform.localRotation = m_transform.localRotation * Quaternion.AngleAxis(10.0f * Time.deltaTime * speed, axis); 6 }
このようなコードを考えてみましたが、実行すると、ある一点(あるキューブの1つの角)だけが
固定されて、コマのような回転となってしまいました。
補足情報(FW/ツールのバージョンなど)
Unity 2022.2.1f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/26 00:59