Exemplo n.º 1
0
 private void OnTriggerStay(Collider other)
 {
     if (trigOn)
     {
         Vector3    dir = (other.transform.position - transform.position).normalized;
         RaycastHit hit;
         if (Physics.Raycast(transform.position, dir, out hit, FOV_radius, raycast))
         {
             if (hit.transform.gameObject.name == "Target")
             {
                 float dot = Vector3.Dot(dir, transform.forward);
                 if (dot > Mathf.Cos(FOV_width * Mathf.Deg2Rad) || hit.distance < 1)
                 {
                     if (hit.distance < attackRadius)
                     {
                         ai.attackTarget = hit.collider.gameObject;
                         ai.ChangeState("StartAttack");
                     }
                     else
                     {
                         ai.targetPos = hit.point;
                         ai.ChangeState("StartChase");
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
 void Death()
 {
     if (currentHealth <= 0 && canDie)
     {
         enemyAI.ChangeState(AIStates.DEAD);
         isAlive = false;
     }
     else
     {
         return;
     }
 }
 public void Execute()
 {
     if (enemy.EnemyStat.Target != null)
     {
         enemy.ChangeState(new BattleAttackState());
     }
 }
Exemplo n.º 4
0
 override public void Execute(EnemyAI enemyAi)
 {
     enemyAi.Trace();
     if (!enemyAi.bSight())
     {
         enemyAi.ChangeState(EnemyPatrol.Instance());
     }
 }
Exemplo n.º 5
0
 override public void Execute(EnemyAI enemyAi)
 {
     enemyAi.Stand();
     if (enemyAi.bSight())
     {
         enemyAi.ChangeState(EnemyTrace.Instance());
     }
 }
Exemplo n.º 6
0
 //检测被攻击  在玩家攻击时检测!!!!!
 public void AttackedByPlayer()
 {
     for (int i = 0; i < allEnemy.Count; i++)
     {
         EnemyAI tmpEnemy = allEnemy[i].GetComponent <EnemyAI>();
         if (Attack.SquareAttack(player, tmpEnemy.transform, PlayerData.forwordDistance, PlayerData.rightDistance))
         {
             tmpEnemy.ChangeState((sbyte)Data.AnimationCount.Attacked);
             tmpEnemy.ReduceBlood(PlayerData.hurt);
         }
         if (Attack.SectorAttack(player, tmpEnemy.transform, PlayerData.radius, PlayerData.angle))
         {
             tmpEnemy.ChangeState((sbyte)Data.AnimationCount.Attacked);
             tmpEnemy.ReduceBlood(PlayerData.hurt);
         }
     }
 }
Exemplo n.º 7
0
 private void Evade()
 {
     //turn left or right
     //GetComponent<Rigidbody2D>().velocity = transform.up * enemy.EnemyStat.EnemySpeed;
     EvadeTimer += Time.deltaTime;
     if (EvadeTimer >= EvadeDuration)
     {
         enemy.ChangeState(new IdleState());
     }
 }
Exemplo n.º 8
0
    private void Idle()
    {
        //speed-up
        //enemyStat.EnemySpeed += enemyStat.EnemyAccel;

        /*if(enemy.EnemyStat.Target != null){
         *      enemy.ChangeState (new InRangeState());
         * }*/

        IdleTimer += Time.deltaTime;
        if (IdleTimer >= IdleDuration)
        {
            enemy.ChangeState(new EvadeState());
        }
    }