【问题标题】:Pygame Tile Based Movement SpeedPygame 基于图块的移动速度
【发布时间】:2012-10-30 20:04:01
【问题描述】:

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

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

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

感谢您的宝贵时间!瑞恩

【问题讨论】:

    标签: python 2d pygame


    【解决方案1】:

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

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

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

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

    Pygame example: using numpy for map array.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-09
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 2012-09-29
      相关资源
      最近更新 更多