Brackeys Fps 控制器只上下移动相机

时间:2021-08-01 16:02:43

标签: c# unity3d

问题

我目前正在关注 Brackeys 的第一人称动作教程。但是,我仍然停留在相机步骤上,因为与大多数有相机移动错误的人不同,我只能上下移动相机(而不是只能左右移动)。

代码

using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using UnityEngine;

public class mouselook : MonoBehaviour
{
    public float mouseSensitivity = 100f;

    public Transform playerBody;

    float xRotation = 0f;
    
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // 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;

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);


        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        playerBody.Rotate(Vector3.up * mouseX);
    }
}

(脚本存储在相机中。playerBody 链接到圆柱体网格。)

1 个答案:

答案 0 :(得分:0)

每次调用 transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); 时,您都将欧拉的 yz 重置为 0。我将更新函数更改为:

    void Update()
    {
       float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
       float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;

       playerBody.Rotate(Vector3.up * mouseX);
       playerBody.Rotate(Vector3.up * mouseX);
    }

我得到了更多预期的行为。我没有看你说的教程,所以它可能会被修复/进一步解释。