XNA平滑动画在高速为WP7

本文关键字:WP7 高速 平滑 动画 XNA | 更新日期: 2023-09-27 17:49:14

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

XNA平滑动画在高速为WP7

不要使用基于帧的移动,如果你的游戏突然有了一个"升级",你的玩家、敌人等并没有"真实地"移动,而是因为你的设备而减慢了速度。我建议你使用基于时间的移动。

目前我猜你有这样的东西:

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

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

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

最后,如果不够平滑,你需要伪造它,比如添加动态模糊,这在2D中很容易做到。只需存储最后几个旧位置,并在这些位置绘制玩家精灵,并且使用比当前位置更小的alpha值。