我目前正在关注 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
链接到圆柱体网格。)
答案 0 :(得分:0)
每次调用 transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
时,您都将欧拉的 y
和 z
重置为 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);
}
我得到了更多预期的行为。我没有看你说的教程,所以它可能会被修复/进一步解释。