【问题标题】:Switch turns between the Player and AI in Unity在 Unity 中切换 Player 和 AI
【发布时间】:2015-11-12 04:05:47
【问题描述】:
我最近开始使用 Unity 进行资源管理隐形游戏。隐身部分是回合制的,类似于 Hitman Go。我有一个简单的角色控制器和一个简单的在特定路径上巡逻的 AI。但是,这些动作是实时工作的,我想将其更改为回合制。 AI 应该等待玩家完成他/她的移动,然后自己移动。播放器也是如此。
只有在对方移动完成时,玩家和 AI 才能移动到相邻的航路点。
我应该怎么做?
谢谢
我写的语言是 UnityScript。
【问题讨论】:
标签:
unity3d
artificial-intelligence
unityscript
【解决方案1】:
作为一个非常简单的解决方案,首先您可以创建一个空的游戏对象。将其命名为 TurnController。使用简单的脚本,您可以在其上添加一个布尔变量。让我们将其命名为 isPlayerTurn。对于玩家移动,你可以检查这个,如果它是真的玩家可以移动。在他/她的移动结束时(可能单击结束转弯按钮或当它达到移动的最大距离或其他东西时)您可以将 isPlayerTurn 设置为 false。当然人工智能应该检查(也许在更新功能中。但可以根据你的设计改变)如果它是真的,人工智能可以做它需要做的事情。并且在其回合结束时,它应该将 isPlayerTurn 更改回 true。我知道这是一个非常简单的解决方案,但希望它有助于开始。我希望我没有误解你的问题。
【解决方案2】:
将 ai 编写为玩家实例并让它模拟玩家输入。
(相反,您也可以在这两个类上实现一个通用接口。)
使用 GameManager 行为脚本生成一个游戏对象,该脚本存储对当前玩家(或 ai)的引用。然后让 GameManager 通过检查他们的输入每帧更新当前玩家。如果(人类)玩家在轮到他的时候提供输入,他的输入将被忽略。
这样,玩家和ai不必知道是否轮到他们了。