Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        Vector3 MemoryTargetPosition(ITarget target)
        {
            IMemorableItem memItem = memory.Find(target as IMemorable);

            return(memItem.lastOccurPosition);
        }