1

感谢您抽时间阅读。现在我正在制作一个非常基本的基于瓷砖的游戏。地图是大量的 16x16 瓦片,人物图像也是 16x16。我的角色有自己的类,它是 sprite 类的扩展,x 和 y 位置是按照 tile 位置保存的。

需要注意的是,我对 pygame 相当缺乏经验。

我的问题是,我计划一次将角色移动限制在一个瓷砖上,我不确定如何做到这一点,即使玩家快速按下方向键数十次,(WASD 或箭头键) 它只会以一定的速度从一个瓷砖移动到另一个瓷砖。我怎么能用pygame实现这个?(类似于 Pokemon 或 NexusTk 等游戏动作)。一个动作将导致玩家在牌中。例如,他们不能在瓷砖之间停下来。

谢谢你的时间!瑞安

4

1 回答 1

0

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

如果时间已过/动画已完成,听起来您希望每次按键移动一次。所以:

  1. 在按键时,切换到:动画状态
  2. 设置目标瓦片坐标
  3. 根据经过的时间绘制偏移量,介于0和之间。如果时间小于<= 1 秒,将在 0 到 16 之间缩放。tilewidthoffset = (elapsed_ms / 1000.) * tile_w
  4. 一旦经过的时间 >= 动画长度(我在上面选择了 1000.),切换到静止状态。

如果在动画状态下发生按键,请忽略它。

Pygame 示例:使用 numpy 作为地图数组。

pygame 演示截图

于 2012-11-10T23:39:46.873 回答