【问题标题】:Designing an AI for isometric tilemap game为等距瓷砖地图游戏设计人工智能
【发布时间】:2013-07-28 08:05:58
【问题描述】:

我有更多的设计问题,然后是专门编程。基本上,我正在使用 cocos2d(即将迁移到 sprite kit)开发一个等距风格地图风格的游戏,并且我正在尝试找出一些最佳实践来为敌人 sprite 实现 AI。

这是我的基本逻辑:

-敌人确定玩家的位置和玩家所处的角度 - 然后敌人会根据这个角度移动一个瓷砖(即左,右,上,下,上,等等......) - 敌人会用动画显示他们朝那个方向移动 - 如果玩家和敌人的距离小于 X 那么敌人会向玩家开火 - 如果玩家和敌人的距离小于 Y,那么敌人将向与向玩家移动相反的瓷砖方向移动 -如果敌人检测到未来的瓷砖移动是碰撞,敌人将不会移动

这是一个非常基本的逻辑,我遇到了两个问题: - 当敌人检测到碰撞时,它将完全停止移动 - 在玩家与敌人之间的某些角度,精灵图像将在 2 个不同的边界角度之间来回闪烁 - 因为我在一个点产生了许多精灵,它们都在同一个方向移动并且完全重叠,我想尝试将它们分开而不在地图上产生大量的生成点(到目前为止有 5 个生成点,每个生成点大约 4-5 个敌人)

我想看看是否有人对如何使这个更复杂有任何好的建议,我可以避免这些问题并为敌人的精灵开发更多的“智能”。

任何信息将不胜感激。

【问题讨论】:

标签: ios cocos2d-iphone


【解决方案1】:

AI 寻路有许多不同的算法。我特别喜欢的一种叫做 A*(A 星),它在具有水平和对角运动的 2-D 网格上效果很好,只需稍作调整即可满足您的要求。

这是维基百科页面,其中包含大量关于 A* 的信息:

A* search algorithm

【讨论】:

  • 我也推荐这个页面来尝试不同的寻路算法:qiao.github.io/PathFinding.js/visual
  • 我想我在阅读 wiki 时理解了这一点。我唯一想知道的是启发式是否必要?我想在我的情况下它的工作方式是我会传递目标瓷砖位置和原始瓷砖位置
  • 在路径上的每个点都使用启发式算法,而不仅仅是在起点和终点。它允许它快速计算出最快的路径。
  • 我想在我的情况下它的工作方式是我会传递目标瓷砖位置和原始瓷砖位置。每个相邻瓦片的距离值为 1。我还必须检查瓦片位置是否被阻挡/碰撞并跳过该瓦片位置。基本上我会按照伪代码所示进行,直到我到达目标瓷砖位置。我想我会返回一些包含精灵要遵循的路径的数组结构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2021-05-23
相关资源
最近更新 更多