1

我的 2d 游戏有一个从上到下移动的精灵(沿 Y + ve 方向移动),它在 30 fps 中足够平滑,因为精灵的 Y 位置在每帧中添加 1 个像素(Y = Y + 1px)。现在的问题是当我想高速移动精灵时,即 Y = Y + 10px,由于在每帧中添加 10px,运动看起来一点也不流畅。想知道,无论如何我可以通过流畅的动画实现高速。

4

1 回答 1

4

不要使用基于帧的移动,如果你的游戏突然出现“打嗝”,你的玩家、敌人等并没有“真实地”移动,而是因为你的设备而变慢了。我建议你使用基于时间的运动。

目前我猜你有这样的事情:

Update(GameTime aTime)
{
    mPlayer.Position += mPlayer.Direction;
}

现在考虑如果您的游戏以 10FPS、100FPS 或 0 FPS 运行会发生什么。运动不一致,因此不流畅。如果你改变它,所以运动是基于经过的时间,你会得到一个更加一致的动画,比如:

Update(GameTime aTime)
{
    mPlayer.Position += aTime.Milliseconds * (Constants.PlayerWalkSpeed * mPlayer.Direction);
}

最后,如果不够平滑,您需要对其进行伪造,例如添加运动模糊,这在 2D 中很容易做到。只需存储最后几个旧位置,然后在这些位置绘制玩家精灵,其 alpha 值小于当前位置。

于 2012-12-20T12:00:01.240 回答