我想沿著另一個游戲物件的 y 軸(綠色)旋轉角色。
這是我的系統的圖片。

我想沿紅色箭頭指示的方向旋轉字符(見圖,它不是 x 軸)。
我查看了其他問題,嘗試了很多代碼,但仍然沒有達到預期的結果。
這是我創建上圖的最新代碼。
右圖是我想要的,左圖不是。
任何建議表示贊賞。謝謝!
IEnumerator RotateToDirection(){
var targetRotation = new Vector3(0, ArrowObject.transform.localEulerAngles.y, 0);
var elapsedTime = 0.0f;
var waitTime = 1f;
while (elapsedTime < waitTime)
{
elapsedTime = Time.deltaTime;
Character.transform.localEulerAngles
= Vector3.Lerp(Character.transform.localEulerAngles, targetDirection, (elapsedTime / waitTime));
yield return null;
}
}
uj5u.com熱心網友回復:
不要使用eulerAngles
當您閱讀 .eulerAngles 屬性時,Unity 會將四元數的內部旋轉表示轉換為歐拉角。因為,使用歐拉角表示任何給定旋轉的方法不止一種,因此您讀出的值可能與您分配的值完全不同。如果您嘗試逐漸增加值以生成影片,這可能會導致混淆。
從您的影像聽起來您希望角色的前軸與另一個物件up軸對齊,因此您可能會使用例如Quaternion.LookRotation類似的東西
var startRotation = Character.transform;
var targetDirection = ArrowObject.transform.up;
var targetRotation = Quaternion.LookRotation(targetDirection);
for(var timePassed = 0f; timePassed< 1f; timePassed = Time.deltaTime)
{
Character.transform.rotation = Quaternion.Lerp(startRotation, targetRotation, timePassed / 1f);
yield return null;
}
Character.transform.rotation = targetRotation;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/520004.html
標籤:C#unity3d
下一篇:如何在改變位置時保存物體的動量?
