Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#/Unity Time.deltaTime使勒平相机跟随跳跃_C#_Unity3d_Time_Lerp - Fatal编程技术网

C#/Unity Time.deltaTime使勒平相机跟随跳跃

C#/Unity Time.deltaTime使勒平相机跟随跳跃,c#,unity3d,time,lerp,C#,Unity3d,Time,Lerp,我最近发布了一个问题,在我的《Unity制作》2D游戏中,相机跟随出现了抖动,问题得到了解决 然而,过了一段时间,我注意到,我仍然在跳跃。我现在知道,问题在于我的相机跟踪的lerp方法。Time.deltaTime的变化如我前面的问题所述,因此使播放器在每帧中移动不同的距离。但由于相机的反应是延迟的,所以您可以在屏幕上看到跳转(在设备上甚至比在Unity Editor中看到的还要多) 一个解决方案是检测这些时间。DeltaTime跳跃,在这些情况下,让相机以某种方式模拟跳跃,对吗?这里的解决办法

我最近发布了一个问题,在我的《Unity制作》2D游戏中,相机跟随出现了抖动,问题得到了解决

然而,过了一段时间,我注意到,我仍然在跳跃。我现在知道,问题在于我的相机跟踪的lerp方法。Time.deltaTime的变化如我前面的问题所述,因此使播放器在每帧中移动不同的距离。但由于相机的反应是延迟的,所以您可以在屏幕上看到跳转(在设备上甚至比在Unity Editor中看到的还要多)

一个解决方案是检测这些时间。DeltaTime跳跃,在这些情况下,让相机以某种方式模拟跳跃,对吗?这里的解决办法是什么

以下是我的脚本:

public class Player: MonoBehaviour 
{ 
    float speed = 5f; 
    void Update() 
    { 
        transform.Translate(0,speed*Time.deltaTime,0); 
    } 
} 

public class CamFollow : MonoBehaviour 
{ 
    public Transform Player; 
    private Vector3 FollowVector; 
    float transition = 0.05f;
    void LateUpdate() 
    { 
        FollowVector = Player.position - new Vector3(0, -4.0f, 10); 
        transform.position = Vector3.Lerp(transform.position, FollowVector, transition); 
    } 
} 

尝试使用
Time.fixedDeltaTime
。这就像是
deltatime
,但它是固定的,所以不像你说的那样。它确实减少了抖动,但我建议您使用Cinemachine,因为它性能非常好,而且您可以对其进行大量控制。

我的第一反应是尝试在FixedUpdate而不是Update中移动您的相机。下面的视频可能会帮助您更好地理解这些差异:如果您还使用
Time.deltaTime
作为插值因子会怎么样?当前,您移动了当前位置和目标位置之间每帧距离的固定值
5%
。可能更愿意使用例如
0.5f*时间。deltaTime
?使用Time.fixedDeltaTime解决了此问题,谢谢!