Unity3D c#2D游戏摄像机跟随正在跳跃

Unity3D c#2D游戏摄像机跟随正在跳跃,c#,unity3d,camera,C#,Unity3d,Camera,我使用Unity制作了一个2D无止境跑步者游戏,玩家对象向上移动,但对于观看者来说,他保持在同一位置,因为相机在跟踪他。下面的方法工作得很好,但问题是它每隔几秒钟就进行一次小跳跃。跳跃很小,因此总体上不会影响游戏性,但它们足够大,使游戏看起来运行不平稳 我甚至不知道是相机在跳跃还是玩家的物体。但我认为是摄像机,因为产卵障碍物也在跳跃。可能是什么问题?我对相机使用了正确的方法吗 public class Player { float speed = 5f; void Update(

我使用Unity制作了一个2D无止境跑步者游戏,玩家对象向上移动,但对于观看者来说,他保持在同一位置,因为相机在跟踪他。下面的方法工作得很好,但问题是它每隔几秒钟就进行一次小跳跃。跳跃很小,因此总体上不会影响游戏性,但它们足够大,使游戏看起来运行不平稳

我甚至不知道是相机在跳跃还是玩家的物体。但我认为是摄像机,因为产卵障碍物也在跳跃。可能是什么问题?我对相机使用了正确的方法吗

public class Player
{
    float speed = 5f;
    void Update()
    {
        transform.Translate(0, speed*Time.deltaTime, 0);
    }
}
这是附在相机上的脚本:

public class CameraFollow
{
    private Vector3 FollowVector;
    public Transform Player;
    void LadeUpdate()
    {
        FollowVector = Player.position - new Vector3(0, -4f, 10);
        transform.position = Vector3.Lerp(transform.position, FollowVector, Time.deltaTime * 4f);
    }
 }

跳跃是否每4秒发生一次?我想问题可能出在你的
Vector3.Lerp
函数中。它基本上是一个松散的相机跟随,需要4秒(
Time.deltaTime*4f
)才能从点a平稳地移动到点B。每4秒它会重置其路径,因此跳跃。至少这是我的理论

如果您不介意摄影机严格跟随播放器,我只需移除Lerp并将
transform.position
设置为如下向量值,如下所示:

void LadeUpdate()
    {
        transform.position = Player.position - new Vector3(0, -4f, 10);
    }

尝试使用Vector3.moveToward

float step =  speed * Time.deltaTime;
transform.position = Vector3.MoveTowards(transform.position, Player.position - new Vector3(0, -4f, 10f), step);

这个解决方案使相机跟随非常平稳,但是我需要某种Lerp,因为玩家有时可以加速1秒,这会使他走得更高,但会使他回到先前的相机位置。有可能在你的解决方案中使用Lerp函数吗?目前我唯一能想象的是,只有当玩家加速时,你才能使用Lerp函数。可能是一个IF语句,在触发加速时激活Lerp 1秒,否则默认为上述方法。