コード例 #1
0
    void PlaceAllRooms()
    {
        for (int x = 0; x < PuzzleDepth; ++x)
        {
            for (int y = 0; y < PuzzleHeight; ++y)
            {
                for (int z = 0; z < PuzzleWidth; ++z)
                {
                    GameObject roomInstance = Instantiate(_roomPrefab,
                                                          new Vector3((x * _roomDimensions.dimensions.x) + (_roomDimensions.dimensions.x - (_roomDimensions.dimensions.x * PuzzleDepth)) / 2,
                                                                      (y * _roomDimensions.dimensions.y) + (_roomDimensions.dimensions.y - (_roomDimensions.dimensions.y * PuzzleHeight)) / 2,
                                                                      (z * _roomDimensions.dimensions.z) + (_roomDimensions.dimensions.z - (_roomDimensions.dimensions.z * PuzzleWidth)) / 2),
                                                          Quaternion.Euler(Vector3.zero));

                    roomInstance.transform.position += _roomContainer.transform.position;
                    roomInstance.transform.parent    = _roomContainer.transform;
                    Room           thisRoom  = roomInstance.GetComponent <Room>();
                    ScriptableRoom roomToAdd = GetNextRoom();
                    Debug.Log("Adding room: " + roomToAdd.name);
                    thisRoom.GenerateRoom(roomToAdd);
                    _allRooms[new Vector3(x, y, z)] = thisRoom;
                }
            }
        }
    }
コード例 #2
0
    // Use this for initialization
    public void GenerateRoom(ScriptableRoom RoomDesign)
    {
        ClearWallsContainer();

        //6 walls, obvs.
        for (int i = 0; i < 6; ++i)
        {
            GameObject wall = Instantiate(wallPrefab, Vector3.zero, Quaternion.Euler(wallSetup.rotation[i]));
            wall.transform.parent = gameObject.transform;

            wall.GetComponentInChildren <MeshRenderer>().materials[0].color = RoomDesign.wall[i].wallColour;
            wall.GetComponentInChildren <MeshRenderer>().materials[1].color = RoomDesign.wall[i].wallColour;

            wall.transform.localPosition = new Vector3(
                wallSetup.position[i].x * wall.transform.localScale.x,
                wallSetup.position[i].y * wall.transform.localScale.y,
                wallSetup.position[i].z * wall.transform.localScale.z);

            walls.Add(wall);
        }
    }