123456789101112131415161718192021222324252627282930313233343536373839 |
- using UnityEngine;
- using System.Collections;
- namespace Pathfinding {
- /// <summary>
- /// Sets the destination of an AI to the position of a specified object.
- /// This component should be attached to a GameObject together with a movement script such as AIPath, RichAI or AILerp.
- /// This component will then make the AI move towards the <see cref="target"/> set on this component.
- ///
- /// See: <see cref="Pathfinding.IAstarAI.destination"/>
- ///
- /// [Open online documentation to see images]
- /// </summary>
- [UniqueComponent(tag = "ai.destination")]
- [HelpURL("http://arongranberg.com/astar/documentation/stable/class_pathfinding_1_1_a_i_destination_setter.php")]
- public class AIDestinationSetter : VersionedMonoBehaviour {
- /// <summary>The object that the AI should move to</summary>
- public Transform target;
- IAstarAI ai;
- void OnEnable () {
- ai = GetComponent<IAstarAI>();
- // Update the destination right before searching for a path as well.
- // This is enough in theory, but this script will also update the destination every
- // frame as the destination is used for debugging and may be used for other things by other
- // scripts as well. So it makes sense that it is up to date every frame.
- if (ai != null) ai.onSearchPath += Update;
- }
- void OnDisable () {
- if (ai != null) ai.onSearchPath -= Update;
- }
- /// <summary>Updates the AI's destination every frame</summary>
- void Update () {
- if (target != null && ai != null) ai.destination = target.position;
- }
- }
- }
|