示例#1
0
        protected virtual void OnProjectileHit(SpaceInvadersProjectile projectile)
        {
            if (m_projectiles == null)
            {
                return;
            }

            m_projectiles.Remove(projectile);
            Destroy(projectile.gameObject);
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
 protected virtual SpaceInvadersProjectile CreateProjectile(SpaceInvadersProjectile i_projectilePrefab)
 {
     return(Instantiate(i_projectilePrefab));
 }