예제 #1
0
    ///攻击
    public override void StateAttack()
    {
        if (enemyPawn == null)
        {
            distance = 0;
            ChangeIdle();
        }
        else
        {
            if (AttackLock == false)
            {
                int j = Random.Range(0, 2); //攻击动画随机
                AttackLock  = true;         //攻击锁
                agent.speed = 0;
                gameObject.transform.LookAt(enemyPawn.transform.position);
                switch (j)
                {
                case 0:
                    animator.SetTrigger("attack1");
                    break;

                case 1:
                    animator.SetTrigger("attack2");
                    break;

                default:
                    animator.SetTrigger("attack3");
                    break;
                }
                if (RectangleAttack(transform, enemyPawn, attackDistance, attackDistance))
                {
                    var hit = enemyPawn.gameObject;
                    if (hit.GetComponent <Pawn1>() != null)
                    {
                        Pawn1 pawn = hit.GetComponent <Pawn1>();
                        if (pawn != null)
                        {
                            //Debug.Log("hp:-10");
                            pawn.TakeDamage(attack);
                        }
                    }
                    else if (hit.GetComponent <Pawn2>() != null)
                    {
                        Pawn2 pawn = hit.GetComponent <Pawn2>();
                        if (pawn != null)
                        {
                            //Debug.Log("hp:-10");
                            pawn.TakeDamage(attack);
                        }
                    }
                }
                if (async != null)
                {
                    StopCoroutine(StateChange());
                }
                async = StartCoroutine(StateChange());
            }
        }
    }
예제 #2
0
 ///显示小兵数值
 private void CurrentPawn()
 {
     Pawn[currentPawn].tag = pawntag;
     if (Pawn[currentPawn].GetComponent <Pawn1>() != null)
     {
         Pawn1 pawn = Pawn[currentPawn].GetComponent <Pawn1>();
         pawnHp_t.text    = pawn.hp.ToString();
         pawAtk_t.text    = pawn.attack.ToString();
         pawnSpeed_t.text = pawn.speed.ToString();
     }
     else if (Pawn[currentPawn].GetComponent <Pawn2>() != null)
     {
         Pawn2 pawn = Pawn[currentPawn].GetComponent <Pawn2>();
         pawnHp_t.text    = pawn.hp.ToString();
         pawAtk_t.text    = pawn.attack.ToString();
         pawnSpeed_t.text = pawn.speed.ToString();
     }
 }
예제 #3
0
 //右键布置小兵
 private void PlacePawn()
 {
     if (Input.GetMouseButtonUp(1))
     {
         Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hit;
         if (Physics.Raycast(ray, out hit))
         {
             Pawn[currentPawn].tag = pawntag;
             if (Pawn[currentPawn].GetComponent <Pawn1>() != null)
             {
                 Pawn1 pawn = Pawn[currentPawn].GetComponent <Pawn1>();
                 pawn.target = target;
             }
             else if (Pawn[currentPawn].GetComponent <Pawn2>() != null)
             {
                 Pawn2 pawn = Pawn[currentPawn].GetComponent <Pawn2>();
                 pawn.target = target;
             }
             Instantiate(Pawn[currentPawn], new Vector3(hit.point.x, 0, hit.point.z), transform.rotation);
         }
     }
 }
예제 #4
0
 /// <summary>
 /// OnCollisionEnter is called when this collider/rigidbody has begun
 /// touching another rigidbody/collider.
 /// </summary>
 /// <param name="other">The Collision data associated with this collision.</param>
 void OnCollisionEnter(Collision other)
 {
     if (other.gameObject.CompareTag(enemyTag))//碰撞了敌方
     {
         var hit = other.gameObject;
         if (hit.GetComponent <Pawn1>() != null)
         {
             Pawn1 pawn = hit.GetComponent <Pawn1>();
             if (pawn != null)
             {
                 pawn.TakeDamage(attack);
             }
         }
         else if (hit.GetComponent <Pawn2>() != null)
         {
             Pawn2 pawn = hit.GetComponent <Pawn2>();
             if (pawn != null)
             {
                 pawn.TakeDamage(attack);
             }
         }
         Destroy(gameObject);
     }
 }