Создание игровых объектов с помощью скрипта
Last updated
Last updated
Теперь рассмотрим последний вариант создания игровых моделей. В нем мы будем использовать язык программирования Lua. Создадим прямоугольный блок стандартного размера. Для этого в скрипте в Workspace вызовем функцию Instance. Эта функция отвечает за создание объекта. Для того чтобы создалась именно деталь, необходимо прописать параметр Part, но, чтобы деталь создалась именно в нашем игровом мире, нужно добавить параметр workspace:
Ниже представлен код с указанием размера детали:
По умолчанию при создании детали создается Block, у которого снизу и сверху есть измененная поверхность. Сверху это Studs (шипы), а снизу Inlets (выемки). Они нужны для скрепления с поверхностью. Параметры можно настроить в классе Surface. Этот класс можно найти как в отдельном окне инструментов (в урезанном виде), так и в свойствах конкретной детали.
Чтобы сгладить верхние и нижние стороны, достаточно прописать для параметра BottomSurface и TopSurface (индекс 0 или 9).
Из предыдущих глав ты уже знаешь, как накладывать материал и цвет на объект, а также регулировать размер и положение. Сейчас попробуем создать дом с крышей, похожий на предыдущий. Начнем с пола и стен. Для этого создадим новый игровой объект и в Workspace напишем скрипт:
Благодаря этой части кода будет создана заготовка для пола размером 50 × 50 и 1 studs в высоту, центр пола будет располагаться в точке (0, 0, 0). Зададим полу светло-коричневый цвет и добавим материал Wood planks:
Далее приступим к созданию стен, но так, чтобы оставались места под дверь и окна. Начнем со сплошной стены:
Создадим еще одну сплошную стену по оси x. Ее нужно повернуть (или можно просто изменить размер). Но для примера используем поворот:
Теперь приступим к созданию более сложной конструкции — стены с проемом для двери. Есть два варианта. 1. Создать три части стены и расположить в определенном порядке, чтобы получилось отверстие. 2. Использовать функцию вырезания отверстия в стене. Для первого варианта строчек кода будет больше, чем для второго. Да и второй вариант создает данную стену цельным объектом. Поэтому лучше использовать второй вариант. Нам нужно создать третью стену и блок, который будет иметь размер дверного проема:
Заметь, что положение блока под дверь должно быть строго внутри третьей стены. Запусти игру и посмотри на результат (рис. 3.125).
Осталось вырезать блок в стене, и за это отвечает функция SubtractAsync. Под вырезанием понимается создание уже нового объекта «Стена с отверстием», который должен быть привязан к игровому пространству workspace. Созданный объект наложится на предыдущие (третья стена и дверь), поэтому их нужно удалить:
Обрати внимание: в функции SubtractAsync содержится тип данных — таблица, и поэтому этот объект заключен в фигурные скобки. Таких объектов может быть много, просто в нашем случае он один.
По такому же принципу создадим четвертую стену с двумя окнами:
Для окон добавим прозрачность с помощью функции Transparency блокам window1 и window2 и при этом не станем их удалять — они будут имитировать стекла. Подчеркнем снова: код содержится в одном скрипте.
А теперь создадим потолок и крышу. Потолок сделать легче, для этого достаточно скопировать код для пола и указать положение по оси y, равное 16:
Создание крыши — сложное задание. Ниже будет представлен пример создания треугольной крыши по такому алгоритму:
создаем все четыре элемента крыши;
настраиваем два боковых элемента, они должны находиться под углом 45° и идти от края крыши до соприкосновения друг с другом;
Дом готов.
Попробуй сделать крышу без подсказки:
Смещаем боковые элементы крыши.
Поздравляю: дом построен!