Пример #1
0
    protected void Shoot()
    {
        //假如现有武器冷却完毕
        if (currentWeapon.IsColdDown())
        {
            //重新开始冷却计时!!!
            //timer = 0;

            //开火点对象显示开火火花
            firePoint.gameObject.SetActive(true);
            //播放射击动画
            myAni.SetTrigger("Shoot");
            //产生子弹
            //Debug.Log("生成子弹");

            Collider2D[] enemys = Physics2D.OverlapCircleAll(transform.position, 5f);
            for (int i = 0; i < enemys.Length; i++)
            {
                if (enemys[i].gameObject.tag == "enemy")
                {
                    enemy = enemys[i].gameObject;
                    break;
                }
            }


            if (enemy != null)
            {
                //现有武器获取瞄准方法(参数为敌人的自身位置)

                currentWeapon.Aim(enemy.transform.position);
                currentWeapon.Fire(firePoint);
            }
            else
            {
                Vector3 v = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                v = Vector3.Scale(v, Vector3.right + Vector3.up);
                currentWeapon.Aim(v);
                currentWeapon.Fire(firePoint);
                //currentWeapon.Aim(transform.position + transform.right);
            }
            //现有武器的开火方法(开火点)——如何被调用的,作用是什么?
            //currentWeapon.Fire(firePoint);
        }
    }