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 的孩子(我的胶囊)

【问题讨论】:

请包含transformplayerBody的层次结构信息 我有一个胶囊作为我的父母,它是玩家的实际身体,然后我的相机是 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 相机在屏幕上滑动,第一人称的主要内容,如果未能解决你的问题,请参考以下文章

unity中制作模拟第一人称视角下的指南针

Unity3d怎么控制第三人称的朝向

unity第一人称控制器怎么使用鼠标点击

Unity RigidBodyFPSController 鼠标不显示

unity第一人称控制器脚步声在哪

第一人称和第三人称之间的相机切换。显示错误