簡體   English   中英

用鼠標旋轉3D剛體對象(將照相機作為子對象)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM