public void Notify(IMemorable memorable, ISensor sensor) { IMemorableItem item = Find(memorable); if (item != null) { item.timeToFoget = 5.0f; if (fogets.Contains(item)) { fogets.Remove(item); } } else { objs.Add(new MemorableItem(memorable)); } }
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); } }
Vector3 MemoryTargetPosition(ITarget target) { IMemorableItem memItem = memory.Find(target as IMemorable); return(memItem.lastOccurPosition); }