Unity人工智能实战(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.2 创建行为模板

在创建行为之前,需要先编写基础代码,这些代码不仅有助于创建智能移动,还可以用于构建模块化的系统,以修改和添加这些行为。我们将创建自定义的数据类型以及本章中用到的大多数算法的基类。

准备工作

第一步是记住更新函数的执行顺序:

Update

LateUpdate

操作步骤

我们需要创建3个类:SteeringAgentBehaviourAgent

1. Steering类作为一种自定义数据类型,用于存储agent的移动和旋转:

2. AgentBehaviour类是本章中大多数要用到的行为的模板类:

3. Agent类是主要组件,它利用行为来创建智能移动。创建文件及其基本要素:

4. 编写Update函数,根据当前的速度值和方向值控制移动:

5. 实现LateUpdate函数,根据当前帧的计算值来更新下一帧的steering(转向)值:

运行原理

本节的关键思路是把移动逻辑放进随后将要构建的行为的GetSteering()函数内部,这样就可以把agent的类精简到只包含主要的计算过程。

另外,得益于Unity脚本和函数的执行顺序,我们能够保证agent的steering值在使用之前已经被初始化了。

延伸阅读

这是一种基于组件的方法,意味着我们必须记得要把Agent脚本附加到GameObject上,以便让转向行为达到预期结果。

其他参考

关于Unity的游戏的消息循环以及脚本和函数执行顺序的更多信息,请参阅官方文档:

http://docs.unity3d.com/Manual/ExecutionOrder.html

https://docs.unity3d.com/Manual/class-MonoManager.html