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); } } }