- Unity人工智能实战(原书第2版)
- (智利)豪尔赫·帕拉西奥斯
- 404字
- 2021-01-07 11:17:01
1.4 为物理引擎调整agent
我们学习了如何为agent实现简单的行为,然而还需要考虑的是,游戏可能需要用到Unity的物理引擎。我们要注意agent是否附加了RigidBody组件,然后相应地调整实现代码。
准备工作
第一步是记住每个事件函数的执行顺序,现在还需要额外注意FixedUpdate函数,因为我们要使用物理引擎管理行为。
▪ FixedUpdate
▪ Update
▪ LateUpdate
操作步骤
本节需要向Agent类中添加一些改动。
1. 打开Agent类。
2. 添加一个成员变量用于保存刚体组件的引用:
3. 在Start函数中获取刚体组件的引用:
4. 实现用于把方向值转化成向量值的函数:
5. 在Update函数的开头添加下面两行代码:
6. 定义FixedUpdate函数:
7. 实现FixedUpdate函数:
实现原理
我们添加了一个成员变量用于保存刚体组件的引用,另外还实现了FixedUpdate函数,类似于Update函数,但是要注意这里需要把作用力应用到刚体上,而无须手动变换对象的位置,因为我们使用了Unity的物理引擎。
最后在每个函数的开头添加了一个简单的验证,以保证只在有刚体时才被调用。
其他参考
关于事件函数执行顺序的更多信息,请参考Unity官方文档:
▪ https://docs.unity3d.com/Manual/ExecutionOrder.html