Let's start by implementing the main ingredients of the Strategy pattern:
- Our first element is the Strategy interface; all our concrete strategies will use it:
namespace Chapter.Strategy
{
public interface IManeuverBehaviour
{
void Maneuver(Drone drone);
}
}
Note that we are passing a parameter of the Drone type to the Maneuver() method. This is an important detail we will review later.
- Next up is our Drone class; it's going to use our concrete strategies, so in the overall structure of the Strategy pattern, we will consider it to be our Context class:
using UnityEngine;
namespace Chapter.Strategy {
public class Drone : MonoBehaviour {
// Ray parameters
private RaycastHit _hit;
private Vector3 _rayDirection;
private float _rayAngle = -45.0f;
private float _rayDistance = 15.0f;
// Movement parameters
public float speed = 1.0f;
public float maxHeight = 5.0f;
...