[英]Rotating 3D rigidbody object (with camera as child) with mouse
我正在使用相機(作為兒童)旋轉3D對象,並使用鼠標和鍵盤旋轉剛體。 我正在使用以下代碼片段:
private void Update()
{
float rh = Input.GetAxisRaw("Mouse X");
float rv = Input.GetAxisRaw("Mouse Y");
float rx = Input.GetAxisRaw("Roll");
rotInput = new Vector3(rv, rh, rx);
Thrust(); //Move forward and backward
}
private void FixedUpdate()
{
Moving.MoveInput(rotInput);
}
我可以用鼠標移動3D對象(和相機),但是當我向左或向右看時,相機會稍微傾斜一點。 我想像FPS一樣用鼠標旋轉,但是要用剛體旋轉(而不是用transform.euler ....)。 有誰知道一種解決方案,以使相機與鼠標完全一致地移動(不傾斜對角線)?
我將代碼更改為:
void moveWithMouse()
{
moveCamera(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"), arrowMouseSpeed);
}
void moveCamera(float horizontal, float verticle, float moveSpeed)
{
mouseX = horizontal;
mouseY = -verticle;
rotY += mouseX * moveSpeed;
rotX += -mouseY * moveSpeed;
roll += Input.GetAxis("Roll");
rotInput = new Vector3(rotY, rotX, roll);
Debug.Log("rotInput" + rotInput);
}
但是現在它一直在旋轉,我無法停止它。 我仍然使用ridigbody。 有解決方案,所以當我停止移動鼠標時,鼠標可以正常工作並且相機停止旋轉嗎?
您不需要滾動。 這就是對角線傾斜相機的原因。 設置rotInput = new Vector3(rv, rh, rx);
的z rotInput = new Vector3(rv, rh, rx);
設置為0,它應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.