这是一个快速简单的寻路系统,我为Magnavale: Eternal Soul制作了它。它设计用于2D平台游戏,但也可以在顶部游戏中使用。
当我规划这个系统时,我想象它像“Pac-Man吃掉玩家放置的点的线”一样。这种东西可能在别的地方有其他名字,但我会称它为“Pac-Man寻路”。
创建事件:
- 创建一个列表或数组。这个列表将包含X和Y坐标的数组。确保它至少包含一个玩家当前坐标的条目。列表从最旧的坐标开始,到最新的坐标结束。一个队列也可以工作,但我不推荐它。
闹钟事件:
- 我设置闹钟每隔两帧在60 FPS(room_speed / 30)运行,但试试看什么对你有效。
- 在闹钟事件中,如果玩家至少移动了几个像素,从他们的最后坐标添加一个新条目到列表的末尾。
步进事件:
- 当对象距离最旧的坐标超过一个设置的半径时,开始接近它,并跳跃如果需要。我的家人可以无限跳跃,但有一段短暂的冷却时间,这帮助很大。
- 一旦坐标在一个较小的半径内,删除它从列表中。
- 最后,从列表的末尾开始向前运行,检查是否有其他坐标在其半径内。如果有,就删除列表中之后的所有坐标。这允许对象跳过冗余点,避免形成环。如果你使用了一个队列,那么这个步骤会非常麻烦,这是为什么我不推荐它的原因。
- 可选:添加一个额外的检查,如果实体被卡在移动的对象上。那么就设置一个计时器/闹钟,然后跳到下一个坐标,不在碰撞中。
如果你使用了一个DS列表,那么就记得在清理事件中删除它!
评论 (0)