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