Основы синтаксиса: переменные, типы данных и арифметические операции
В предыдущей статье мы совершили первый важный шаг: познакомились с интерфейсом Roblox Studio и написали свой первый скрипт, который вывел приветствие в консоль. Это было похоже на то, как если бы мы сели в кабину самолета и научились включать радио. Теперь пришло время разобраться, как работает двигатель и как управлять полетом.
Сегодня мы погрузимся в фундамент программирования на Lua. Мы разберем, как компьютер хранит информацию, какие виды данных существуют и как производить математические расчеты, которые необходимы для создания любой игры — от простого платформера до сложной RPG.
Что такое переменные?
Представьте, что вы переезжаете в новую квартиру. У вас есть куча вещей: книги, посуда, одежда. Чтобы не сваливать всё в одну кучу, вы раскладываете вещи по коробкам. На каждой коробке вы пишете маркером, что внутри: «Книги», «Кухня», «Зимняя одежда».
В программировании переменная — это и есть такая коробка. Это именованная область в памяти компьютера, где мы храним данные, чтобы использовать их позже.
!Иллюстрация концепции переменной как контейнера для хранения значения.
Создание переменной (Объявление)
В Lua создание переменной происходит очень просто. Мы используем ключевое слово local, затем пишем имя переменной, знак равенства и значение.
Давайте разберем эту конструкцию:
local: Это ключевое слово говорит компьютеру: «Создай новую переменную только для этого участка кода». Использование local — это золотой стандарт в Lua. Это делает код быстрее и предотвращает ошибки, когда разные скрипты случайно меняют общие данные.
myName: Это имя переменной (название на коробке). Вы придумываете его сами.
=: Это оператор присваивания. Он не означает «равно» в математическом смысле. Он означает: «Возьми то, что справа, и положи в коробку слева».
"Alex": Это значение, которое мы кладем в переменную.Правила именования переменных
Компьютеру всё равно, как вы назовете переменную, хоть x, хоть superMegaVariable2000. Но вам и другим программистам — не всё равно. В Lua приняты следующие правила:
* Латиница: Используйте английские буквы.
* Без пробелов: Имя должно быть одним словом.
* Не начинать с цифры: 1player — ошибка, player1 — правильно.
* camelCase: Это стиль написания, когда первое слово пишется с маленькой буквы, а каждое следующее — с большой. Например: walkSpeed, maxHealth, partColor.
* Осмысленность: Имя должно говорить о том, что внутри. local h = 100 — плохо. local health = 100 — хорошо.
Типы данных в Lua
В наши «коробки» можно положить разные вещи. Нельзя налить воду в картонную коробку для книг — она размокнет. В программировании тоже важно знать, какой тип данных мы используем. Lua — язык с динамической типизацией. Это значит, что вам не нужно заранее говорить переменной, что в ней будет лежать. Она сама подстроится под содержимое.
Рассмотрим основные типы данных, с которыми вы будете работать в Roblox Studio.
1. Nil (Пустота)
Это особый тип, который означает «ничего». Если переменная не имеет значения, она равна
nil. Это не ноль и не пустая строка. Это полное отсутствие данных.
2. Boolean (Логический тип)
Самый простой тип. У него всего два состояния:
true (истина, да, включено) и
false (ложь, нет, выключено). Это как выключатель света.
3. Number (Число)
В Lua нет разделения на целые числа (1, 5, 10) и дробные (1.5, 3.14). Все они считаются одним типом —
number. Это упрощает жизнь новичкам.
4. String (Строка)
Это текст. Строки всегда должны быть обернуты в кавычки. Можно использовать двойные
" " или одинарные
' ' кавычки.
Важно: Если вы напишете текст без кавычек, Lua подумает, что это имя переменной, и выдаст ошибку, если такой переменной нет.
Специфические типы Roblox
Помимо стандартных типов Lua, Roblox добавляет свои собственные, необходимые для работы с 3D-миром. Мы изучим их подробнее позже, но знать о них нужно уже сейчас:
* Vector3: Описывает позицию или размер в 3D-пространстве (X, Y, Z).
* Color3: Описывает цвет (Красный, Зеленый, Синий).
* Instance: Ссылка на любой объект в игре (Part, Light, Sound).
!Визуальное представление различий между типами данных.
Комментарии: Заметки для себя
Иногда вам нужно оставить пометку в коде, которую компьютер должен проигнорировать. Это называется комментарий.
* Однострочный комментарий: Начинается с двух дефисов --.
* Многострочный комментарий: Начинается с --[[ и заканчивается ]].
Арифметические операции
Создание игр неразрывно связано с математикой. Расчет урона, скорости передвижения, времени до конца раунда — всё это формулы. Lua предоставляет полный набор инструментов для вычислений.
Базовые операторы
| Операция | Символ | Пример кода | Результат |
| :--- | :---: | :--- | :--- |
| Сложение | + | print(10 + 5) | 15 |
| Вычитание | - | print(10 - 2) | 8 |
| Умножение | | print(4 5) | 20 |
| Деление | / | print(20 / 2) | 10 |
Возведение в степень
Для возведения числа в степень используется символ
^ (карет).
Формула площади квадрата:
где — площадь, — длина стороны квадрата.
В коде это выглядит так:
Остаток от деления (Модуль)
Очень полезный оператор, обозначается символом
%. Он возвращает остаток после деления одного числа на другое.
Математическая запись:
где — остаток, — делимое, — делитель.
Пример:
Зачем это нужно в играх?
Например, чтобы определить, четное число или нет (если x % 2 == 0, то четное). Или чтобы давать игроку награду каждый 5-й уровень (level % 5 == 0).
Сложные формулы
Lua соблюдает стандартный порядок действий в математике: сначала скобки, потом степени, потом умножение/деление, и в конце сложение/вычитание.
Рассмотрим формулу расчета урона с критическим ударом:
где — итоговый урон, — базовый урон оружия, — бонус от силы персонажа, — множитель критического удара.
В коде:
Операции со строками
С числами всё понятно, но что делать, если нужно сложить два слова? Эта операция называется конкатенация (склеивание). В Lua для этого используются две точки ...
Внимание: Очень частая ошибка новичков — пытаться сложить строки через плюс +. В Lua плюс работает только для чисел!
Вы также можете склеивать строки и числа. Lua автоматически превратит число в строку для вывода:
Практика: Изменяем свойства через скрипт
Давайте применим полученные знания на практике в Roblox Studio. Мы создадим скрипт, который будет менять свойства детали (Part), используя переменные.
Создайте в Workspace деталь (Part).
Создайте новый Script в ServerScriptService.
Напишите следующий код:Нажмите Play. Вы увидите, что ваша деталь стала полупрозрачной, и сквозь неё можно пройти. Мы использовали переменную типа number для прозрачности и переменную типа boolean для коллизии.
Заключение
Сегодня мы заложили первый камень в фундамент вашего понимания скриптинга. Вы узнали:
* Что переменные — это коробки с подписями для хранения данных.
* Что данные бывают разных типов: числа, строки, булевы значения и пустота.
* Как использовать арифметику для расчетов внутри игры.
* Как склеивать строки с помощью оператора ...
В следующей статье мы оживим наш код еще сильнее. Мы научимся писать функции — мини-программы внутри программы, которые позволят нам выполнять действия по команде, а не только при запуске игры. Готовьтесь, будет интересно!