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