public GameObject GetBullet(GameConstants.GunTypes gunType, Transform gunPort) { GameObject bulletObject = null; // Get Bullet From pool and return it switch (gunType) { // Get First Child, set parent to gunport (to remove from respective pool) case GameConstants.GunTypes.MachineGun: bulletObject = unusedBulletPool.GetComponentInChildren <BulletScript>(true).gameObject; break; case GameConstants.GunTypes.ShotGun: bulletObject = unusedShotgunBulletPool.GetComponentInChildren <ShotgunBulletScript>(true).gameObject; break; case GameConstants.GunTypes.LaserGun: bulletObject = unusedLaserBulletPool.GetComponentInChildren <LaserBulletScript>(true).gameObject; break; } bulletObject.transform.SetParent(worldBullets); bulletObject.transform.position = gunPort.transform.position; // Return bullet and let GunPort handle how to fire and set initial velocities return(bulletObject); }
// Returning Normal Bullet to pool public void ReturnBulletToPool(GameObject bulletToStore, GameConstants.GunTypes bulletType) { if (bulletType == GameConstants.GunTypes.MachineGun) { // Return to normal bullet pool bulletToStore.transform.SetParent(unusedBulletPool); } else if (bulletType == GameConstants.GunTypes.ShotGun) { // Return to shotgun bullet pool bulletToStore.transform.SetParent(unusedShotgunBulletPool); } else if (bulletType == GameConstants.GunTypes.LaserGun) { // Return to laser bullet pool bulletToStore.transform.SetParent(unusedLaserBulletPool); } bulletToStore.gameObject.SetActive(false); bulletToStore.transform.localScale = Vector3.one; bulletToStore.transform.position = Vector3.zero; }