示例#1
0
文件: BaseShoot.cs 项目: aqcd/ChessTD
    void shoot()
    {
        for (int i = 0; i < targetArray.Length; i++)
        {
            GameObject bullet = shooterType == ShooterTypeEnum.FRIENDLY ? FriendlyBulletObjectPool.instance.getPooledObject()
                                                                        : EnemyBulletObjectPool.instance.getPooledObject();

            Vector3 launchOrigin = new Vector3(transform.position.x, bullet.transform.position.y, transform.position.z)
                                   + targetArray[i].normalized * GameConstants.gridSize / 2;

            if (bullet != null)
            {
                bullet.transform.position = launchOrigin;
                bullet.transform.rotation = transform.rotation;
            }
            else
            {
                bullet = (GameObject)Instantiate(bulletPrefab.gameObject, launchOrigin, transform.rotation);
            }
            BulletUtil.activateBullet(bullet);

            BulletMovement bulletMovementComponent = bullet.GetComponent <BulletMovement>();
            if (bulletMovementComponent != null)
            {
                bulletMovementComponent.setTarget(targetArray[i]);
                bulletMovementComponent.setVelocity(velocity);
                bulletMovementComponent.setType(shooterType);
            }

            BulletDamage bulletDamageComponent = bullet.GetComponent <BulletDamage>();
            if (bulletDamageComponent != null)
            {
                bulletDamageComponent.setDamage(damage);
            }
        }
    }