How to do it...

We can regard it as a big three-step process in which we first manipulate the internal target position in a parameterized random way, face that position, and move accordingly:

  1. Create the Wander class deriving from Face:
using UnityEngine; 
using System.Collections; 
 
public class Wander : Face 
{ 
    public float offset; 
    public float radius; 
    public float rate; 
} 
  1. Define the Awake function in order to set up the internal target:
public override void Awake() 
{ 
    target = new GameObject(); 
    target.transform.position = transform.position; 
    base.Awake(); 
} 
  1. Define the GetSteering function:
public override Steering GetSteering() { Steering steering = new Steering(); float wanderOrientation = Random.Range(-1.0f, 1.0f) * rate; float targetOrientation ...

Get Unity 2018 Artificial Intelligence Cookbook - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.