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