Blending techniques allow you to add behaviors and mix them without creating new scripts every time you need a new type of hybrid agent.
This is one of the most powerful techniques in this chapter, and it's probably the most used behaviour-blending approach because of its power and the low cost of implementation.
We must add a new member variable to our AgentBehaviour
class called weight
and preferably assign a default value—in this case, 1.0f
. Besides this, we should refactor the Update
function to incorporate weight
as a parameter to the Agent
class' SetSteering
function. All in all, the new AgentBehaviour
class should look something like this:
public class AgentBehaviour : MonoBehaviour
{
public float weight = 1.0f;
// ... the rest of the class
public virtual void Update ()
{
agent.SetSteering(GetSteering(), weight);
}
}
We just need to change the SetSteering
agent function's signature and definition:
public void SetSteering (Steering steering, float weight)
{
this.steering.linear += (weight * steering.linear);
this.steering.angular += (weight * steering.angular);
}
The weights are used to amplify the steering
behavior result, and they're added to the main steering structure.
The weights don't necessarily need to add up to 1.0f
. The weight
parameter is a reference for defining the relevance that the steering
behavior will have among the other ones.