コード例 #1
0
    void SpawnElementGroup(float furthestRoomEndX)
    {
        // find random inactive element group
        GameObject newGroup = InactiveGroups[Random.Range(0, InactiveGroups.Count - 1)];

        //Debug.Log("spawning element group: " + newGroup.name);
        //Messenger.Broadcast("GroupActivated" + newGroup.name);

        // enable it + all children



        newGroup.SetActive(true);

        foreach (Transform element in newGroup.transform)
        {
            element.gameObject.SetActive(true);
        }

        SpriteGroupData groupData = newGroup.GetComponent <SpriteGroupData>();

        // spawn powerups and obstacles if this is a group that does so

        if (groupData != null)
        {
            groupData.SpawnObjects();
        }

        // move to active

        InactiveGroups.Remove(newGroup);

        ActiveGroups.Add(newGroup);

        float roomWidth = 0.0f;

        Transform width = newGroup.transform.Find("Width");

        if (width != null)
        {
            roomWidth = width.localScale.x;
        }

        else
        {
            roomWidth = groupData.GroupTileWidth * (groupData.GroupTileSize / 100);
        }

        float roomCenter = furthestRoomEndX + roomWidth * 0.5f;


        newGroup.transform.position = new Vector3(roomCenter, newGroup.transform.position.y, newGroup.transform.position.z);
    }
コード例 #2
0
    void Deactivate(GameObject group)
    {
        if (ReactivateElements == true)
        {
            foreach (Transform child in group.transform)
            {
                child.gameObject.SetActive(true);

                // clear spawned-in powerups or obstacles
                if (child.gameObject.name == "Powerup" || child.gameObject.name == "Obstacle")
                {
                    foreach (Transform powerupOrObstacle in child)
                    {
                        Destroy(powerupOrObstacle.gameObject);
                    }
                }
            }
        }
        group.SetActive(false);
        group.transform.position = new Vector3(ResetPosition.position.x, group.transform.position.y, group.transform.position.z);
        //sprite.transform.position = ResetPosition.position;
        //Debug.Log("deactivating element group: " + group.name);

        // move group to deactivate on next update

        SpriteGroupData groupData = group.GetComponent <SpriteGroupData>();

        // spawn powerups and obstacles if this is a group that does so

        if (groupData != null)
        {
            groupData.DespawnObjects();
        }

        toDeactivate.Add(group);
    }
コード例 #3
0
    void GenerateGroup()
    {
        List <GameObject> roomsToRemove = new List <GameObject>();
        bool  addRooms         = true;
        float playerX          = player.transform.position.x;
        float removeRoomX      = playerX - screenWidth;
        float addRoomX         = playerX + screenWidth;
        float furthestRoomEndX = 0;

        foreach (GameObject group in ActiveGroups)
        {
            SpriteGroupData groupData = group.GetComponent <SpriteGroupData>();

            float roomWidth = 0.0f;

            Transform width = group.transform.Find("Width");

            if (width != null)
            {
                roomWidth = width.localScale.x;
            }

            else
            {
                roomWidth = groupData.GroupTileWidth * (groupData.GroupTileSize / 100);
            }

            float roomStartX = group.transform.position.x - (roomWidth * 0.5f);
            float roomEndX   = roomStartX + roomWidth;

            if (roomStartX > addRoomX)
            {
                addRooms = false;
            }

            if (roomEndX < removeRoomX)
            {
                roomsToRemove.Add(group);
            }

            furthestRoomEndX = Mathf.Max(furthestRoomEndX, roomEndX);

            /*
             * // hacky, but it works.
             * if (group.name == "ObstacleGroup1" && firstGenerate == false)
             * {
             *  Debug.Log("hacky");
             *  Debug.Log(furthestRoomEndX);
             *  Debug.Log(roomEndX);
             *  Debug.Log(roomStartX);
             *  Debug.Log(roomWidth);
             *  SpawnElementGroup(furthestRoomEndX);// + (roomWidth * 0.5f));
             *  firstGenerate = true;
             *  return;
             * }
             */
        }

        // deactivate groups
        foreach (GameObject group in roomsToRemove)
        {
            Deactivate(group);
        }

        if (addRooms == true)
        {
            SpawnElementGroup(furthestRoomEndX);
        }
    }