Ejemplo n.º 1
0
 public virtual void DoChase()
 {
     if (m_target != null && m_creature.InRange(m_target, canSeeDistance))
     {
         var heading   = m_target.transform.position - this.transform.position;
         var direction = heading / heading.magnitude;
         m_creature.agent.SetDestination(transform.position + direction * targetDistance);
         state = EAI_State.STATE_COMBAT;
     }
     else
     {
         state = EAI_State.STATE_WANDER;
     }
 }
Ejemplo n.º 2
0
 public virtual void DoCombat()
 {
     if (m_target != null && m_creature.CanSee(m_target))
     {
         if (!m_creature.InRange(m_target, targetDistance) && state == EAI_State.STATE_COMBAT)
         {
             state = EAI_State.STATE_CHASE;
         }
     }
     else
     {
         state = EAI_State.STATE_WANDER;
     }
 }
Ejemplo n.º 3
0
        public virtual void DoWander()
        {
            if (m_creature.agent.velocity.magnitude <= 0)
            {
                var direction = new Vector3(m_creature.transform.position.x + 1 * Random.Range(-10f, 10f),
                                            m_creature.transform.position.y, m_creature.transform.position.z + 1 * Random.Range(-10f, 10f));
                m_creature.agent.SetDestination(direction);
            }

            if (behavior == EAI_Behavior.BEHAVIOR_AGRESSIVE && state == EAI_State.STATE_WANDER)
            {
                var actor = m_creature.GetActorInRange(10, EGameActorType.TYPE_PLAYER);
                if (actor != null && m_creature.CanSee(actor))
                {
                    m_target = actor;
                    state    = EAI_State.STATE_COMBAT;
                }
            }
        }