0

我游戏中的玩家位于屏幕中央,我“滚动”背景以四处移动。

我得到一个按键列表 pygame.key.get_pressed(),如果玩家的移动冷却时间结束,我调用一个移动函数。此功能将地图沿移动方向滚动一个图块。

然而,运动并不顺畅。它“跳”到下一个图块。

如何实现一个移动系统,以便玩家以小步长(速度 * dt)移动,但每次调用移动函数时仍然只移动一个瓷砖的距离?游戏需要在我认为的每个小步骤之间进行渲染。

完整来源:https ://github.com/HCollings/rpg-game/blob/alternate_movement/game.py

4

1 回答 1

1

动画和运动都是关于你所感知的,而不是实际发生的。在网格系统中,您可以通过获取代码的绘图部分并独立于游戏位置更新绘图位置,将玩家的视觉运动从实际机制中抽象出来。

您遇到的跳跃问题通常通过某种插值技术来处理。lerp() 是提供线性插值的常用函数,但在下面的示例中,我将使用不同的技术。

这是关于插值技术的资源:http: //paulbourke.net/miscellaneous/interpolation/

您可以将您的移动实现为目的地、方向和“未使用”的移动增量。如果你想移动到一个新的方格,你可以设置你的方向并将一个标准的增量数(代表一个方格)添加到你的“未使用增量计数器”中。然后,您在新位置绘制图形,偏移量为您仍然拥有的增量数。如果您想一次移动多个方格,那么您将增加未使用增量的数量。

只要您有未花费的增量(想想运动点),运动就会发生。这种技术也适用于视觉碰撞检测。如果剩余的增量数量是您移动的方格数之间总增量的一部分(~25%?),那么根据玩家所看到的,图形“实际上”在方格中。

于 2013-08-10T15:18:55.467 回答