public override Status Update() { Memory memory = self.GetComponent <Memory>(); if (!memory) { return(Status.Error); } //BaseAIParameters param = self.GetComponent<BaseAIParameters>(); //if (!param) // return Status.Error; ITarget[] targets = memory.AllTargets(); if (targets == null) { return(Status.Failure); } if (targets.Length == 0) { return(Status.Failure); } return(Status.Success); //ITarget target = targets[0]; //IMemorable target = memory.GetLast(); //return target != null ? Status.Success : Status.Failure; //return Status.Failure; }
ITarget MemoryTarget() { ITarget[] allTargets = memory.AllTargets(); if (allTargets.Length > 0) { return(allTargets[0]); } return(null); }
public override Status Update() { //BaseAIParameters param = self.GetComponent<BaseAIParameters>(); //if (!param || !param.destinationEnable) //{ // return Status.Failure; //} //if (Vector3.Distance(self.transform.position, param.destination) < param.endSeekingDistance) //{ // return Status.Success; //} Memory memory = self.GetComponent <Memory>(); if (!memory) { return(Status.Failure); } ITarget[] targets = memory.AllTargets(); bool hasTarget = targets.Length > 0; if (hasTarget) { ITarget target = targets[0]; IMemorable memorable = target as IMemorable; IMemorableItem memItem = memory.Find(memorable); Vector3 destination = memItem.lastOccurPosition; UnityEngine.AI.NavMeshAgent agent = self.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.SetDestination(destination); agent.Resume(); return(Status.Running); } else { UnityEngine.AI.NavMeshAgent agent = self.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.Stop(); return(Status.Failure); } }