UnityのQuaternionの角度計算について、数日調べたり考えたのですが答えがでず、スクリプト制作を依頼させてください
オイラー角(eulerAngles)を使うと特定の角度の時にバグるので、Quaternionだけで計算した物が欲しいです
【やりたいこと】
キューブ(Unityのデフォルトの立方体)が3つありまして
1つ目のキューブの角度をStartでランダム角度にして
2つ目のキューブの角度を1つ目のキューブのX軸(0.9倍) Y軸(0.8倍) Z軸(0.7倍)
3つ目のキューブの角度を1つ目のキューブのX軸(0.9倍) Y軸(0.9倍) Z軸(0.9倍)
にしたいです。
Quaternionや数学的知識詳しそうな方優先で依頼させて頂こうと思っています
よろしくお願いいたします
現在不具合発生している、作成中のオイラー角を使ったCube回転スクリプトも以下文章と添付ファイルに張っておきます。
using UnityEngine;
public class QuaternionTest : MonoBehaviour
{
public Transform Cube1;
public Transform Cube2;
public Transform Cube3;
void Start()
{
Cube1.rotation = Random.rotation;
}
void Update()
{
Vector3 eulerRot = NormalVector(Cube1.rotation.eulerAngles);
Vector3 adjustedRot = new Vector3(
eulerRot.x * 0.9f,
eulerRot.y * 0.8f,
eulerRot.z * 0.7f
);
Cube2.rotation = Quaternion.Euler(adjustedRot);
adjustedRot = new Vector3(
eulerRot.x * 0.9f,
eulerRot.y * 0.9f,
eulerRot.z * 0.9f
);
Cube3.rotation = Quaternion.Euler(adjustedRot);
}
private Vector3 NormalVector(Vector3 vec)
{
return new Vector3(
Mathf.Repeat(vec.x + 180f, 360f) - 180f,
Mathf.Repeat(vec.y + 180f, 360f) - 180f,
Mathf.Repeat(vec.z + 180f, 360f) - 180f
);
}
}