基于Pygame Tile的移动速度

时间:2012-11-10 21:06:45

标签: python 2d pygame

感谢您花时间阅读本文。  现在我正在制作一个非常基本的平铺游戏。地图是大量的16x16图块,字符图像也是16x16。我的角色有自己的类,它是精灵类的扩展,x和y位置是根据磁贴位置保存的。

注意我对pygame相当缺乏经验。

我的问题是,我计划一次将角色移动限制在一个瓦片上,我不知道如何制作它,即使玩家快速击中方向键数十次,(WASD或箭头键)它只会以一定的速度从一个瓷砖移动到另一个瓷砖。我怎么能用pygame实现这个呢? (类似于像口袋妖怪或NexusTk的游戏运动)。一个动作会导致玩家进入一个牌。例如,它们无法在瓷砖之间停止。

感谢您的时间!莱恩

1 个答案:

答案 0 :(得分:0)

将角色位置存储为网格坐标。因此,如果他在(2,0),他将被渲染为(32,0)。然后游戏动画他在瓷砖之间移动,但是,他或者在一个或另一个上。在移动状态下,您渲染0到tilewidth之间的(x,y)偏移。

如果时间已经过去/动画完成,听起来你想要每按一次一次动作。所以:

  1. 在按键上,切换到:动画状态
  2. 设置目标图块坐标
  3. 根据已用时间在0tilewidth之间绘制偏移量。如果时间少于<= 1秒,offset = (elapsed_ms / 1000.) * tile_w将在0到16之间缩放。
  4. 一旦经过的时间是&gt; =动画长度(我选择1000以上),切换到静止状态。
  5. 如果在动画状态下发生按键,请忽略它。

    Pygame example: using numpy for map array.

    pygame demo screenshot