예제 #1
0
        private void DestinationPointUpdated(Vector3 position)
        {
            if (Vector3.Distance(mob.Transform.position, position) <= mob.Model.AttackModel.MaxAttackDistance)
            {
                //todo проверка прямой видимости
                if (followController.FollowTargetUnit == attackController.AttackTargetUnit)
                {
                    if (useLog)
                    {
                        Debug.Log($"{mob.Name} Enemy {attackController.AttackTargetUnit.Name} in attack area");
                    }

                    mob.Attack(attackController.AttackTargetUnit);
                    return;
                }
            }
        }
예제 #2
0
 // Update is called once per frame
 void Update()
 {
     if (targetSelected == false && beingAttacked == false)
     {
         if (monsterBehavior.IsVisible())
         {
             target         = monsterBehavior.GetObjVisible().transform;
             targetSelected = true;
         }
         else
         {
             monsterBehavior.Idle();
         }
     }
     else if (beingAttacked && targetSelected == false)
     {
         if (monsterBehavior.IsVisible())
         {
             target         = monsterBehavior.GetObjVisible().transform;
             targetSelected = true;
         }
         monsterBehavior.Find();
     }
     else
     {
         if (target != null)
         {
             monsterBehavior.Attack();
             if (!selectLayer)
             {
                 gameObject.layer = 9;
                 selectLayer      = true;
             }
         }
         else
         {
             targetSelected = false;
             beingAttacked  = false;
         }
     }
 }