1.11 通过权重混合多个行为

混合(blending)技术可以把多个行为搭配起来使用,而不用每次在需要新的混合型agent时创建新的脚本。

这是本章中最强大的技术之一,因为功能强大且实现成本低,这可能是使用最广的行为混合(behavior-blending)途径。

准备工作

我们必须添加一个新成员变量weightAgentBehaviour类中,在该示例中最好给它赋一个默认值1.0f。除此之外,还应该重构Update函数,以便把weight作为一个参数放进Agent类的SetSteering函数。总的说来,新的AgentBehaviour类应该是这样的:

操作步骤

我们只需要改变Agent类的SetSteering函数的签名及定义:

运行原理

权重值用于放大steering行为的结果,并且被添加到了主steering结构中。

延伸阅读

权重值的和并不需要是1.0fweight参数作为参考,用于定义steering行为与其他参数的相关性。

其他参考

在本章中,有一个避开墙体的示例就是用权重混合实现的。