There's one glaring issue with the code examples presented in this chapter. We encapsulated attack maneuver behaviors into distinct strategy classes, but each maneuver is nothing more than a single animation running on a loop. So, in an actual game project that's been built by a production team that includes animators, I would not have animated the enemy drones in code by using coroutines or even a Tween animation engine. Instead, I would ask an animator to author some detailed attack maneuver animations in an external authoring tool and then import them into Unity as animation clips. I would then have used Unity's native animation system and its state machine feature to assign attack maneuver animations to a drone dynamically.
Using this approach, I would have gained quality in the animations and the flexibility of transitioning smoothly from one attack behavior to another, if I decide that the drones can switch attacks when an internal...