在Cocos2d中运行AI的最佳方法是什么?
我已经有我的人工智能实现了。通常情况下,我会在我的游戏循环中执行AI,检查上次AI执行已经过去了多长时间,以及在当前情况下是否可以执行它,然后最后执行它。
据我所知,Cocos2d删除了GameLoop的概念,并用操作代替了它,这很棒,但我不知道如何最好地利用它们来接管这一AI执行。我目前的解决办法是创建一个ccSequence,1)执行AI,2)执行另一个执行相同事情的ccSequence (本质上是一个操作循环)。我不喜欢的是,所有的行动都必须是时间,需要精确的行动.但我可以解决这个问题。
我不喜欢的另一件事是,虽然这对人工智能有好处.那渲染动作呢。我可以很容易地为我呈现我的行动的结果,但是另一个AI的行动的结果呢?比如另一个人工智能杀了我。我必须等待我的动作序列执行,然后我才能检查我是否出了什么事,但是如果我的动作是10秒长.在我意识到我应该死之前我站在那里吗?
我想现在我可以设置多个动作序列了。一个给我的人工智能。一份给我的最新消息。但是在我走到这条路太远之前,动作序列真的是的一个很好的替代品吗?
发布于 2012-12-31 03:14:37
我假设这是Cocos2d-iphone分支。
Cocos2d允许您安排一个发生在每一个帧上的更新,就像游戏循环一样。如果您将此更新安排在您的场景或某个始终存在的基本层/节点上,您可以首先仔细执行您的AI操作,然后检查/更新您的游戏状态。我发现这是一个非常好的地方来管理人工智能和游戏状态。
或者,您可以将更新安排在特定的时间间隔,而不是每一帧,还可以指定更新回调的优先级,以便确保更新方法在当前框架期间和呈现之前或之后运行。
见关于计划更新/选择器的文档。
就我个人而言,我在计划的更新中做所有的游戏逻辑和AI,而不是动作(除了少数例外,比如在动作完成后改变状态)。诚然,你可以管理一个动作集合,如果必要的话,你可以过早地停止它们,但是有时候它确实会变得有点痛苦,你的游戏的流畅性可能会受到影响。对于我自己来说,我经常使用自定义动作来执行相对的动作/更改,而不是绝对的,这样它们就可以被组合和取消,而不会破坏视觉效果。
https://gamedev.stackexchange.com/questions/46526
复制相似问题