[英]Unity - Apply two local rotations to object (trying to recreate the rotation of a controller joystick into a 3D mesh joystick)
[英]Rotating 3D object with a single joystick
我正在Unity 3d中創建一個使用單個操縱桿的游戲。 我試圖弄清楚如何正確使用操縱桿旋轉3d對象。 基本上,當操縱桿被向上(或向前)推時,對象將向前旋轉,反之亦然。 我的問題是,如果將對角線向左或向右推,則使對象正確旋轉。
我的操縱桿使用的值為(0,1)表示向上,(0,-1)表示向下,(1,0)表示右側,(-1,0)表示左側。
如何使對象在操縱桿上向前或向后以及向對角線方向旋轉? (很抱歉,這令人困惑。我正在嘗試盡可能簡單地問這個問題)。
現在,這就是我要旋轉的內容:
if ((x > 0 && x < .2f) || (x < 0 && x > .2f)) x = 0;
if ((y > 0 && y < .2f) || (y < 0 && y > .2f)) y = 0;
if (x < 0) car.transform.Rotate(car.transform.forward.x * 10f, car.transform.forward.y * 10f, -car.transform.forward.y * 10f);
else if (x > 0) car.transform.Rotate(car.transform.forward.x * 10f, car.transform.forward.y * 10f, car.transform.forward.y * 10f);
else car.transform.Rotate(car.transform.forward.x * 10f, car.transform.forward.y * 10f, 0f);
看來您不了解Transform.Rotate
(第二次重載)。
這是方法的簽名:
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
xAngle
是圍繞x
軸旋轉的度數。 傳遞正向矢量的一個分量( car.transform.forward.x
)試圖將單位矢量分量放入接受角度的參數中。 概念和單位根本不匹配,因此結果無法描述。
相反,您應該根據操縱桿位置使用角度旋轉。 相對模式(默認為Space.Self
)表示操縱桿相對於對象的當前旋轉起作用。
應該這樣做,其中x
和y
是您的操縱桿位置:
car.transform.Rotate(y, x, 0)
您可以仔細查看哪些操縱桿軸與哪些Unity軸匹配,或者嘗試四處移動x
和y
直到正確工作。 您可能還需要根據自己的喜好取反x
或y
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.