Ejemplo n.º 1
0
 public override void Tick()
 {
     if (HasLineOfSightToAttackTarget(out float distance))
     {
         brain.SetState(new AttackState(brain));
     }
     else if (Vector3.Distance(brainTransform.position, targetTransform.position) > distanceToStopAiming)
     {
         brain.SetState(new ChaseState(brain));
     }
 }
Ejemplo n.º 2
0
        public override void Tick()
        {
            float distanceFromTarget = GetDistanceFromSoldierToTarget();

            if (distanceFromTarget > distanceToStopChasing)
            {
                brain.SetState(new IdleState(brain));
            }
            else if (distanceFromTarget < distanceToStartAiming)
            {
                brain.SetState(new AimState(brain));
            }
        }
Ejemplo n.º 3
0
        private void EndAttack()
        {
            brain.AttackModule.OnAttackEnd -= EndAttack;

            if (HasLineOfSightToAttackTarget(out float distance))
            {
                brain.SetState(new AttackState(brain));
            }
            else
            {
                if (brain)
                {
                    brain.SetState(new AimState(brain));
                }
            }
        }
Ejemplo n.º 4
0
 public override void Tick()
 {
     if (Vector3.Distance(brainTransform.position, targetTransform.position) < distanceToStartChasing)
     {
         brain.SetState(new ChaseState(brain));
     }
 }
Ejemplo n.º 5
0
        public AttackState(SoldierBrain brain)
        {
            this.brain     = brain;
            brainTransform = brain.transform;
            target         = brain.TargetReference.Value;

            if (brain)
            {
                brain.AttackModule.EnableToAttack();
                brain.AttackModule.OnAttackEnd += EndAttack;
            }
            else
            {
                brain.SetState(new DeadState(brain));
            }
        }