Python 如何实现基于平铺的平滑移动

Python 如何实现基于平铺的平滑移动,python,pygame,Python,Pygame,我游戏中的玩家在屏幕中央,我“滚动”背景以移动 我用pygame.key.get_pressed()得到一个按键列表,如果玩家的移动冷却结束,我调用移动函数。此功能将地图沿移动方向滚动一个平铺 然而,运动并不顺利。它“跳”到下一个瓷砖 我如何实现一个移动系统,使玩家以小步(速度*dt)移动,但每次调用move函数时仍然只移动一个瓷砖的距离?我认为游戏需要在每一小步之间进行渲染 这里有完整的资料来源:动画和动作都是关于你所感知到的,而不是实际发生的事情。在网格系统中,通过获取代码的绘图部分并独立于

我游戏中的玩家在屏幕中央,我“滚动”背景以移动

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

然而,运动并不顺利。它“跳”到下一个瓷砖

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


这里有完整的资料来源:

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

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

以下是有关插值技术的资源:

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


只有当你有未使用的增量(想想移动点)时,移动才会发生。这种技术也适用于视觉碰撞检测;如果剩余的增量是你移动的方块数之间总增量的一部分(~25%?),那么根据玩家看到的情况,图形“实际上”在方块中。

谢谢,我基本上已经实现了这一点。移动->点=64。渲染->更改bg.rect和点-=1。