我一直在用SpriteKit制作游戏。现在我已经添加了敌人,想知道如何使用AI控制他们在地图中移动(就像其他游戏一样)。
我希望敌人能够在TMX地图上四处走动,根据随机数来转弯。我尝试过这样做,但遇到了很多问题。有没有人知道哪些文章可以帮助我解决这个问题?我已经进行了一些研究。"PathFinding"和"A*"都出现了,但没有解释或示例代码告诉我如何实现它。非常感谢任何帮助。
我一直在用SpriteKit制作游戏。现在我已经添加了敌人,想知道如何使用AI控制他们在地图中移动(就像其他游戏一样)。
我希望敌人能够在TMX地图上四处走动,根据随机数来转弯。我尝试过这样做,但遇到了很多问题。有没有人知道哪些文章可以帮助我解决这个问题?我已经进行了一些研究。"PathFinding"和"A*"都出现了,但没有解释或示例代码告诉我如何实现它。非常感谢任何帮助。
一篇关于PacMan的ghosts behavior文章。简单而有效。
Amit's Game Programming Information。一个更普遍的讨论关于制作游戏。
Gamasutra。所有游戏设计方面都非常优秀的资源。
Designing AI Algorithms For Turn-Based Strategy Games。Gamasutra的一篇文章,非常有用地用简单的英语解释了回合制AI。
arc4random()
来决定他接下来做什么。这提供了真正的随机行为,并使坏人变得完全不可预测。// An Update function for your Enemy
function Update
paths = GetAllPathways()
if paths.length == 0
TurnAround()
else
randomPath = paths.Random()
TurnTowards(randomPath)
endif
MoveForward()
end function
function GetAllPathways()
paths = new Array()
if CanGoForward()
paths.push(forward)
end if
if CanGoLeft()
paths.push(left)
end
if CanGoRight()
paths.push(right)
end
return paths
end function
像A*这样的算法,实际上更适用于复杂的事物(而不是随机决策),其中你可能有一个复杂或动态的地图,并希望你的敌人或玩家动态地瞄准某个目标,这就是A*的作用所在,通过确定一条穿过世界的路径来找到目标。