Beispiel #1
0
        public override void SpawnMovableObject()
        {
            ObstacleMask wallMask   = RandomLaneMaskGenerator.GenerateObstacleMask(1);
            Transform    spawnpoint = wallSpawnPosition[Random.Range(0, wallSpawnPosition.Length)];

            ((CollectibleObjectPooler)pooler).SpawnCollectible(wallMask, spawnpoint.position, Quaternion.identity);
        }
Beispiel #2
0
        public static ObstacleMask CreateInitializedObstaclemask(byte l, byte c, byte r)
        {
            ObstacleMask mask = new ObstacleMask();

            mask.leftLaneValue   = l;
            mask.centerLaneValue = c;
            mask.rightLaneValue  = r;
            return(mask);
        }
        public GameObject SpawnCollectible(ObstacleMask mask, Vector3 position, Quaternion rotation)
        {
            //1-Get Collectible from pool
            GameObject collectible = poolDictionary[Taglist.CollectibleTag].Dequeue();

            collectible.transform.position = position;
            collectible.transform.rotation = rotation;
            collectible.SetActive(true);
            poolDictionary[Taglist.CollectibleTag].Enqueue(collectible);

            //2-Initialize obstacle
            collectible.GetComponent <MovableObject>().InitMovable(mask);
            return(collectible);
        }
Beispiel #4
0
        /// <summary>
        /// Builds a wall from given mask in given slot.
        /// Lanes always go from Left to Right
        /// </summary>
        /// <param name="wallSlot"></param>
        /// <param name="wallMask"></param>
        public string[] BuildObstacle(int gateCount = 1)
        {
            ObstacleMask wallMask = RandomLaneMaskGenerator.GenerateObstacleMask(gateCount);

            //Idea: Given an obstacle mask, builds a string array with the tags of the obstacle entities (walls and gate)
            var obstacleMask = wallMask.ToArray();

            string[] obstacleTags = new string[3];

            for (int i = 0; i < obstacleMask.Length; i++)
            {
                if (i == 0)
                {
                    if (obstacleMask[i] == 0) //Wall
                    {
                        obstacleTags[i] = /*Taglist.WallPrefix +*/ Taglist.WallLeftTag;
                    }
                    else //Gate
                    {
                        obstacleTags[i] = Taglist.GatePrefix + GetRandomGate() + Taglist.LeftSufix;
                    }
                }
                else if (i == 1)
                {
                    if (obstacleMask[i] == 0) //Wall
                    {
                        obstacleTags[i] = Taglist.WallCenterTag;
                    }
                    else //Gate
                    {
                        obstacleTags[i] = Taglist.GatePrefix + GetRandomGate() + Taglist.CenterSufix;
                    }
                }
                else
                {
                    if (obstacleMask[i] == 0) //Wall
                    {
                        obstacleTags[i] = Taglist.WallRightTag;
                    }
                    else //Gate
                    {
                        obstacleTags[i] = Taglist.GatePrefix + GetRandomGate() + Taglist.RightSufix;
                    }
                }
            }

            return(obstacleTags);
        }
        public override void InitMovable(ObstacleMask mask)
        {
            //Place collectible correctly based on given mask
            int[] maskArray = mask.ToArray();
            int   laneIndex;

            for (laneIndex = 0; laneIndex < 3; laneIndex++)
            {
                if (maskArray[laneIndex] == 1)
                {
                    break;
                }
            }

            transform.localPosition += (laneIndex - 1) * GridConfig.LaneWidth * Vector3.right;

            base.InitMovable();
        }
Beispiel #6
0
 public virtual void InitMovable(ObstacleMask mask)
 {
 }