Menu
CoddyTech

Спавн в сетке

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 64 из 85.

Вложенный цикл посещает каждую ячейку сетки: внешний цикл выбирает столбец, а внутренний проходит вдоль него. Помести внутрь Instantiate, и в каждой ячейке появится объект. Так из плиток шириной 2 единицы создаётся пол размером 3 на 3, поэтому плитки располагаются на расстоянии 2 единиц друг от друга:

public GameObject tilePrefab;

void Start()
{
    for (int x = 0; x < 3; x++)
    {
        for (int z = 0; z < 3; z++)
        {
            Vector3 spot = new Vector3(x * 2, 0, z * 2);
            Instantiate(tilePrefab, spot, Quaternion.identity, transform);
        }
    }
}

Плитки располагаются в точках x = 0, 2, 4 и z = 0, 2, 4: всего их девять, от (0, 0, 0) до (4, 0, 4). Циклы выполняются один раз в Start(). В Update() они добавляли бы ещё девять плиток в каждом кадре.

Четвёртый аргумент — родительский объект. Девять отдельных объектов Tile(Clone) загромождали бы окно Hierarchy; передача transform помещает их внутрь объекта, на котором находится этот скрипт, — Floor, — чтобы их можно было свернуть, перемещать вместе или удалить вместе. Переданная позиция по-прежнему является мировой позицией.

challenge icon

Задание

Средне

Построй стену из префабов Brick шириной 4 кирпича и высотой 5 кирпичей.

  1. В Start() организуй цикл c от 0 до 3, а внутри него — r от 0 до 4.
  2. Во внутреннем цикле вызови Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). Последний аргумент делает каждый кирпич дочерним объектом Wall.

Нажми «Играть»: на земле появится стена из 20 кирпичей. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 столбца и 5 рядов кирпичей, каждый из которых — дочерний объект этого Wall
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity