【问题标题】:Unity 3D first person movementUnity 3D第一人称动作
【发布时间】:2022-01-23 10:25:05
【问题描述】:

我正在关注 brackeys 第一人称动作教程。但我无法让相机工作。 我正确地遵循了教程,但是这段代码不起作用。没有错误,但它不起作用。这是代码

using System.Collections;
using System.Collections.Generic;
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()
    {
        Cursor.lockState = CursorLockMode.Locked;
    }

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

此代码没有错误但不起作用。我该如何解决这个问题?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    您附上的代码是正确的。

    我建议您再次按照教程进行操作,并密切注意该脚本的附加位置。

    现在我自己检查了教程,我通过将相机作为玩家的孩子,将 MouseLook.cs 附加到相机游戏对象,并将玩家游戏对象设置为 MouseLook.cs 中的 Player Body 变量来让它工作。我推荐确保将 mouseSensitivity 变量设置为 100。接下来,如果这不能解决您的问题,则可能意味着很多事情。

    首先,您的项目可以取消设置轴“鼠标 X”和“鼠标 Y”,这意味着它不会在您移动鼠标时记录鼠标的移动。

    其次,玩家或相机的旋转可能会被其他一些可能导致 MouseLook 旋转被忽略的行为所覆盖。

    【讨论】:

    • 我已经尝试了你的建议,我有玩家游戏对象,里面是主摄像头和玩家模型。 MouseLook.cs 目前是项目中唯一的脚本。但是如何设置鼠标 X 和鼠标 Y?
    • 您能确定 MouseLook.cs 已附加到主摄像头游戏对象吗?如果您不将脚本附加到游戏对象,则它不会在您运行游戏时运行。鼠标 X 和 Y 可以在编辑>项目设置>输入管理器中找到。如果需要,您可以在文档中找到有关 Unity 输入管理器的更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多