目標:私は 3 d ボタンを持っています。クリックするたびに、X 軸を中心に 180 度回転させます。
説明: 片側に「ターン 1」、反対側に「ターン 2」と書かれています。だから私はそれがターンで反転することを望みます。
スクリプトはボタンを回転させますが、180 度ではありません。回転の度合いは、クリックするたびに減少し、ボタンが反転してから機能しなくなります。
私が間違っていることを教えてください。vector3、クォータニオン、およびオイラー角度について読み、考えられるすべての組み合わせを試しました。別の解決策は、フラグを使用して、ボタンが既に回転している場合はボタンを 180 度戻すことですが、これが機能しない理由を本当に理解したいと思います。
これが私のスクリプトです:
public Quaternion newRotation;
public Quaternion oldRotation;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.transform.gameObject.name == "EndTurnButton")
{
oldRotation = hit.transform.rotation;
newRotation = new Quaternion(oldRotation.x + 180, oldRotation.y, oldRotation.z, 0);
hit.transform.rotation = Quaternion.Lerp(oldRotation, newRotation, Time.deltaTime * 0.1f);
}
}
}
}