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