[英]Unity object not rotating around correct axis
因此,我正在編寫一個腳本,該腳本能夠使用鼠標移動來旋轉對象。 我設置的場景是一個照相機,前面有一個物體。 向左移動鼠標會導致對象向左旋轉,向上移動鼠標會導致對象向上旋轉,依此類推。現在,我有一個小問題。 當我將對象向左或向右旋轉90度,然后向上或向下旋轉時,它繞Z軸而不是X軸旋轉,就像我想要的那樣。 發生這種情況的原因是,當向左或向右旋轉時,路線的Z和X軸隨我之前操縱的Y軸一起旋轉。
我制作了兩個展示問題的GIF:
我想一直發生的事情: https : //media.giphy.com/media/wsUxoi9LyXXbB24PNg/giphy.gif
實際發生的事情: https : //media.giphy.com/media/1jl3MNtMuXW9AAUQOZ/giphy.gif
這是我當前正在使用的代碼:
public float object_rotSens = 100.0f;
float object_rotY = 0.0f;
float object_rotX = 0.0f;
void Update()
{
object_rotX += Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY += Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.localEulerAngles = new Vector3(object_rotY, -object_rotX, 0);
}
我希望有人可以幫助我更改代碼,這樣即使對象繞Y軸旋轉了任意角度,我也可以進行首選旋轉。 提前致謝!
更新:
克里斯·H(Chris H)幫助我解決了問題。 對於有相同問題的任何人,以下是幫助我解決問題的方法:
object_rotX = Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY = Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.RotateAround(objectImRotating.transform.position, new Vector3(object_rotY, -object_rotX, 0), 100 * Time.deltaTime);
嘗試使用Transform.RotateAround而不是localEulerAngles。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.