我目前有以下場景出現在游戲模式和我的場景模式中。

我嘗試使用以下代碼在腳本中添加一些滑鼠移動:
using UnityEngine;
public class MouseHandler : MonoBehaviour
{
// horizontal rotation speed
public float horizontalSpeed = 1f;
// vertical rotation speed
public float verticalSpeed = 1f;
private float xRotation = 0.0f;
private float yRotation = 0.0f;
private Camera cam;
void Start()
{
cam = Camera.main;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * horizontalSpeed;
float mouseY = Input.GetAxis("Mouse Y") * verticalSpeed;
yRotation = mouseX;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90, 90);
// this is for the mouse to move around the scene
cam.transform.eulerAngles = new Vector3(xRotation, yRotation, 0.0f);
}
}
它作業正常。重要的是要注意相機主相機顯示上面的影像。
所以看起來是對的。
這是未注釋掉 cam.transform.eulerAngles 時播放視圖的樣子。當它被注釋掉時,它就像第一個正確的參考一樣出現。知道是什么原因造成的嗎?

uj5u.com熱心網友回復:
相機的旋轉在您的場景中分配了一些非零值。因此,當xRotation和yRotation用零初始化時,違規行會用零cam.transform.eulerAngles = new Vector3(xRotation, yRotation, 0.0f);覆寫場景定義的旋轉,也就是“身份旋轉”。
為避免這種情況,請讓您的代碼在開始時讀取相機的旋轉并使用這些值而不是零:
void Start()
{
cam = Camera.main;
Vector3 camEulers = cam.transform.eulerAngles;
xRotation = camEulers.x;
yRotation = camEulers.y;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/424505.html
下一篇:基于多個列舉值顯示欄位-Odin
