繁体   English   中英

相机跟随导致玩家口吃 Unity 2D

[英]Camera Follow Causing Player To Stutter Unity 2D

我目前正在尝试使相机顺利跟随玩家。 该脚本工作正常,但问题是该脚本导致玩家在某个点口吃。 例如,如果玩家在 X:3,玩家会口吃,但如果玩家在 X:-6,玩家会停止口吃。 我 100% 确定这个脚本是问题所在,因为如果我删除脚本,播放器就会停止口吃。

这是相机跟随脚本:

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

public class CameraFollowing : MonoBehaviour
{
    [SerializeField]
    private Transform target;

    [SerializeField]
    private Vector3 cameraOffset;

    [SerializeField]
    private float followSpeed = 10f;

    [SerializeField]
    private float xMin = 0f;

    private Vector3 velocity = Vector3.zero;

    private void FixedUpdate()
    {
        Vector3 targetPos = target.position + cameraOffset;
        Vector3 clampedPos = new Vector3(Mathf.Clamp(targetPos.x, xMin, float.MaxValue), targetPos.y, targetPos.z);
        Vector3 smoothPos = Vector3.SmoothDamp(transform.position, clampedPos, ref velocity, followSpeed * Time.fixedDeltaTime);

        transform.position = smoothPos;
    }
}

如果您知道答案或可能的原因,请告诉我,我正在努力在今年年底之前发布、发布等游戏。 感谢:D

口吃我认为你的意思是颤抖或颤抖(不熟悉口吃这个词)。 我会尝试适应文档示例。 使用void Update()LateUpdate()而不是FixedUpdate()

如果您希望游戏准确,您可能需要使用void LateUpdate() 这个方法会在检测到输入后调用,所以反应会更好。 我相信这是更好的选择,因为它会比Update()更准确。

如果抖动从确定的点开始,我还将跟踪场景中的哪个位置,并检查 position 附近是否有一些错位的对撞机,从那里开始出现不希望的抖动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM