上QQ阅读APP看书,第一时间看更新
1.2 创建行为模板
在创建行为之前,需要先编写基础代码,这些代码不仅有助于创建智能移动,还可以用于构建模块化的系统,以修改和添加这些行为。我们将创建自定义的数据类型以及本章中用到的大多数算法的基类。
准备工作
第一步是记住更新函数的执行顺序:
▪ Update
▪ LateUpdate
操作步骤
我们需要创建3个类:Steering、AgentBehaviour和Agent:
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