コード例 #1
0
    private void SpawnOneHouse()
    {
        var waterAndLot = _worldPlane
                          .GetStableShorelineBlocks()
                          .OrderBy(_ => Random.value)
                          .Take(10)
                          .SelectMany(waterBlock =>
        {
            return(_worldPlane.GetNearbyVacantLotsStream(waterBlock.GetGridPosition())
                   .Where(levelVacantLot => waterBlock.IsLevelWith(levelVacantLot))
                   .Select(vacantLot => new Tuple <Block, Block>(waterBlock, vacantLot)));
        })
                          .OrderBy(_ => Random.value)
                          .FirstOrDefault();

        if (waterAndLot != null)
        {
            var(waterBlock, vacantLot) = waterAndLot;
            var house = Instantiate(tinyHouseTemplate);
            vacantLot.Occupy(house);
            var target = waterBlock.transform.position;
            target.y = house.transform.position.y;
            house.transform.LookAt(target);

            _lastPlacedHouse = Time.fixedTime;
        }
    }