我正在制作一個簡單的游戲,其中兩個衛星圍繞一個行星運行。我想通過按下一個按鈕來做到這一點:
public KeyCode switch_rotation_moon_a;
private bool rotating_left = false;
private void Update()
{
if (Input.GetKeyDown(switch_rotation_moon_a))
{
rotating_left = !rotating_left;
}
}
其中rotating_left 決定旋轉方向。然后,我將其用于實際執行輪換:
private void FixedUpdate()
{
planet_position = radius * Vector3.Normalize(this.transform.position - planet.transform.position) planet.transform.position;
this.transform.position = planet_position;
if (rotating_left)
{
transform.RotateAround(planet.transform.position, new Vector3(0, 0, 1), rotation_speed);
}
transform.RotateAround(planet.transform.position, new Vector3(0, 0, -1), rotation_speed);
}
開始游戲時,行星似乎在一個方向上旋轉得很好,但反轉 z 軸只會停止旋轉。
我已經研究過 transform.RotateAround(),但我很難理解它背后的確切數學。我也希望能簡單解釋一下它背后的數學原理,我不指望可以復制代碼!謝謝!:)
uj5u.com熱心網友回復:
你錯過了一個else
,即:
if (rotating_left)
{
transform.RotateAround(planet.transform.position, new Vector3(0, 0, 1), rotation_speed);
}
else
{
transform.RotateAround(planet.transform.position, new Vector3(0, 0, -1), rotation_speed);
}
您當前的代碼在為真時同時運行兩個旋轉rotating_left
,導致它們相互抵消。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524054.html
標籤:C#unity3d回转
上一篇:按日期選擇隨機時段
下一篇:將移動手勢轉換為滑鼠輸入