Unity 相机在屏幕上滑动,第一人称
Posted
技术标签:
【中文标题】Unity 相机在屏幕上滑动,第一人称【英文标题】:Unity camera flicks across screen, first person 【发布时间】:2021-03-04 07:38:10 【问题描述】:您好,我是 UNITY 的新手,我已经为第一人称相机编写了一些代码,但是有时当我环顾四周时,它会闪烁相机的朝向。这是我的代码
public float mouseSensitivity = 200f;
public Transform playerBody;
float yRotation = 0f;
// Start is called before the first frame update
void Start()
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
// Update is called once per frame
void Update()
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
yRotation -= mouseY;
yRotation = Mathf.Clamp(yRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(yRotation, 0f, 0f);
playerBody.Rotate(Vector3.up * mouseX);
我也有一个视频来展示我的问题https://youtu.be/nMopJzNyYr4 因为问题不清楚。
我有一个胶囊作为我的父母,它是玩家的实际身体,然后我的相机是 playerBody 的孩子(我的胶囊)
【问题讨论】:
请包含transform
和playerBody
的层次结构信息
我有一个胶囊作为我的父母,它是玩家的实际身体,然后我的相机是 playerBody 的孩子(我的胶囊)
尝试不使用 deltaTime
乘法。鼠标轴上的GetAxis
为您提供鼠标位置的差异,这与帧无关。
如果我的回答对您有所帮助,请考虑accepting it 给我一些声誉积分,并帮助其他有类似问题的人找到它。
【参考方案1】:
尝试不使用 deltaTime
乘法。鼠标轴上的 GetAxis
会为您提供鼠标位置的差异,除非您对 Absement 的测量感兴趣,否则不应将其乘以 deltaTime
或任何其他时间增量,而您可能不感兴趣!!
您对距离测量更感兴趣,因此您可以使用
float mouseABC = Input.GetAxis("Mouse ABC") * mouseSensitivity;
.
或者,如果您想要鼠标移动的速度,您实际上宁愿除除以time.deltaTime
,例如float mouseHorizontalVelocity = Input.GetAxis("Mouse X") * mouseSensitivity / Time.deltaTime;
。
【讨论】:
以上是关于Unity 相机在屏幕上滑动,第一人称的主要内容,如果未能解决你的问题,请参考以下文章