protected virtual void OnProjectileHit(SpaceInvadersProjectile projectile) { if (m_projectiles == null) { return; } m_projectiles.Remove(projectile); Destroy(projectile.gameObject); }
protected virtual void CreateProjectilePool(SpaceInvadersProjectile i_projectilePrefab) { m_projectilePool = new List <SpaceInvadersProjectile> (PROJECTILE_POOL_SIZE); for (int i = 0; i < PROJECTILE_POOL_SIZE; i++) { SpaceInvadersProjectile newProjectile = CreateProjectile(i_projectilePrefab); newProjectile.transform.parent = transform.root; newProjectile.gameObject.SetActive(false); newProjectile.ActionProjectileDestroyed = OnProjectileHit; m_projectilePool.Add(newProjectile); } }
public virtual void Shoot(SpaceInvadersProjectile i_projectilePrefab, Vector3 i_direction, float i_speed, Vector3 i_position, Transform i_parent, float i_destroyHeight, bool isPrefab = true) { SpaceInvadersProjectile newProjectile = isPrefab ? Instantiate(i_projectilePrefab) : i_projectilePrefab; newProjectile.transform.position = i_position; newProjectile.transform.rotation = Quaternion.identity; newProjectile.transform.parent = i_parent; newProjectile.Init(new object [] { i_direction, i_speed, gameObject.layer, i_destroyHeight }); newProjectile.ActionProjectileDestroyed = OnProjectileHit; if (m_projectiles == null) { m_projectiles = new List <SpaceInvadersProjectile> ( ); } m_projectiles.Add(newProjectile); }
protected virtual SpaceInvadersProjectile GetFreeProjectile(SpaceInvadersProjectile i_projectilePrefab) { SpaceInvadersProjectile freeProjectile = null; foreach (SpaceInvadersProjectile projectile in m_projectilePool) { if (projectile.gameObject.activeSelf == false) { freeProjectile = projectile; break; } } if (freeProjectile == null) { freeProjectile = CreateProjectile(i_projectilePrefab); m_projectilePool.Add(freeProjectile); } freeProjectile.gameObject.SetActive(true); return(freeProjectile); }
protected virtual SpaceInvadersProjectile CreateProjectile(SpaceInvadersProjectile i_projectilePrefab) { return(Instantiate(i_projectilePrefab)); }