Unity camera flicks across screen, first person

六眼飞鱼酱① 提交于 2021-01-07 01:32:36

问题


Hello I am new to UNITY I have written some code for a first person camera however sometimes when I am looking around it will flick what way the camera is facing. This is my code

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);
}

I have a video to show my issue as well https://youtu.be/nMopJzNyYr4 for is the question is not clear.

I have a capsule as my parent it is the players actual body and then my camera is a child to the playerBody ( my capsule )


回答1:


Try it without the deltaTime multiplication. GetAxis on a mouse axis gives you a difference in mouse position, which should not be multiplied by deltaTime or any other time delta unless you are interested in a measurement of Absement which you probably are not!!

You are more interested in a distance measurement, so you can just use float mouseABC = Input.GetAxis("Mouse ABC") * mouseSensitivity;.

Alternatively, if you were to want the speed of the mouse movement, you would actually rather divide by time.deltaTime such as float mouseHorizontalVelocity = Input.GetAxis("Mouse X") * mouseSensitivity / Time.deltaTime;.



来源:https://stackoverflow.com/questions/64937075/unity-camera-flicks-across-screen-first-person

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!