适用于WP7的XNA高速平滑动画

时间:2012-12-20 11:14:55

标签: c# windows-phone-7 animation xna sprite

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

1 个答案:

答案 0 :(得分:4)

不要使用基于框架的移动,如果你的游戏突然出现“hickup”你的玩家,敌人等没有“逼真地”移动,而是因为你的设备而放慢速度。我建议你使用基于时间的运动。

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

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

现在考虑如果您的游戏以10FPS,100FPS或0 FPS运行会发生什么。运动不一致,因此不流畅。如果你改变了,那么移动就是基于经过的时间,你可以获得更加一致的动画,例如:

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

最后,如果这不够平滑,你需要假装它,比如添加运动模糊,这在2D中很容易做到。只需存储最后几个旧位置,并在这些位置绘制玩家精灵,其中alpha值低于当前位置。