unity3D 中相机的抖动问题

问题描述 投票:0回答:0

当我在关卡中四处移动播放器时,我的相机出现问题。 我的意思是: 使用鼠标环顾四周时,游戏运行流畅,但是一旦我开始使用 WASD 移动我的播放器,相机就会抖动。

这是一个视频(可能很难理解)

我的相机脚本和让相机跟随玩家的脚本是两个不同的脚本,只有当相机必须跟随玩家时才会出现问题,因此我假设问题出在 MovePlayerCam 脚本中,如下所示:

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

public class MovePlayerCam : MonoBehaviour
{
    public Transform CamHolder;

    void Update()
    {
        transform.position = CamHolder.position;
        // camHolder is an empty GameObject that is contained by a player Parent Object that has the player movement script
    }
}

我有另一个项目,使用相同的 MovePlayerCam 脚本,但没有出现问题。然而,在这个项目中,我使用旧的统一输入系统来移动我的播放器。在我遇到问题的项目中,我正在尝试学习如何使用新的输入系统,我可能在那里破坏了一些东西所以这也是我的玩家移动脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;
using UnityEngine;

public class BaseMovement : MonoBehaviour
{
    [Header("ref")]
    Rigidbody rb;
    public Transform orientation;
    public PlayerInputs playerControls;

    [Header("Values")]
    public float moveSpeed;
    public float jumpStrength;
    public float maxMoveSpeed;
    public float airMultiplier;
    public float groundDrag;
    public float airDrag;
    public float crouchDrag;
    public float slideDrag;
    bool grounded;


    Vector3 moveDirection;
    private InputAction move;
    private InputAction vertical;

    private void Awake()
    {
        playerControls = new PlayerInputs();
    }

    private void OnEnable()
    {
        move = playerControls.Player.Move;
        move.Enable();
    }
    private void OnDisable()
    {
        move.Disable();
    }

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.drag = groundDrag;
    }

    void Update()
    {
        MoveInputs();
    }

    private void MoveInputs()
    {
        if (rb.velocity.magnitude < maxMoveSpeed)
        {
            moveDirection = orientation.forward * move.ReadValue<Vector2>().y + orientation.right * move.ReadValue<Vector2>().x;
            rb.AddForce(moveDirection.normalized * moveSpeed * airMultiplier, ForceMode.Force);
        }
    }
}

为了解决这个问题,我尝试将 MovePlayerCam 脚本放在 lateUpdate 和 FixedUpdate 中,但都没有用。四处走动时,我仍然会出现相机抖动。所以请帮助lmao

c# unity3d camera jitter
© www.soinside.com 2019 - 2024. All rights reserved.