Учебники

Unity — базовые скрипты движения

В этом уроке мы напишем код, который заставляет gameObject перемещаться вверх, вниз, влево и вправо в зависимости от ввода пользователя. Это должно помочь нам легче понять процесс написания сценариев Unity.

Помните, что у каждого GameObject есть по крайней мере один компонент — Transform . Что особенного, так это то, что Transform для gameObject также отображается как переменная в сценариях Unity, поэтому мы можем изменить его с помощью кода. Это не ограничивается преобразованием; все компоненты в Unity имеют свойства, которые доступны через переменные в сценариях.

Давайте начнем с нашего сценария движения. Создайте новый сценарий и назовите его «Движение».

Теперь откройте сценарий, и вы увидите то же, что вы видели на последнем уроке.

Давайте создадим общедоступную переменную типа float с именем speed . Обнародование переменной в Unity имеет большое преимущество —

  • Переменная отображается как редактируемое поле внутри редактора, поэтому вам не нужно вручную корректировать значения в коде.

Переменная отображается как редактируемое поле внутри редактора, поэтому вам не нужно вручную корректировать значения в коде.

public class Movement : MonoBehaviour {
   public float speed;
}

Если мы сохраним этот скрипт, не затрагивая другие методы, он должен скомпилироваться в Unity.

(Вы можете увидеть, когда он компилируется буфер значок в правом нижнем углу.)

Затем перетащите сценарий из активов в GameObject. Если вы делаете это правильно, это то, что вы должны увидеть в свойствах GameObject —

Перетащить

Поскольку значение скорости является регулируемым и не требует постоянного изменения кода, мы можем использовать метод update () вместо start ().

Давайте теперь рассмотрим цели для метода обновления —

  • Проверьте пользовательский ввод.

  • Если есть пользовательский ввод, прочитайте инструкции по вводу.

  • Измените значения положения преобразования объекта в зависимости от его скорости и направления. Для этого мы добавим следующий код —

Проверьте пользовательский ввод.

Если есть пользовательский ввод, прочитайте инструкции по вводу.

Измените значения положения преобразования объекта в зависимости от его скорости и направления. Для этого мы добавим следующий код —

void Update() {
   float h = Input.GetAxisRaw(“Horizontal”);
   float v = Input.GetAxisRaw(“Vertical”);
   
   gameObject.transform.position = new Vector2 (transform.position.x + (h * speed), 
      transform.position.y + (v * speed));

Давайте теперь обсудим код в кратком изложении.

Прежде всего, мы создаем переменную с плавающей запятой с именем h (для горизонтали), и ее значение задается методом Input.GetAxisRaw . Этот метод возвращает -1, 0 или 1 в зависимости от того, какую клавишу игрок нажал на стрелки вверх / вниз / влево / вправо.

Класс Input отвечает за получение ввода от пользователя в виде нажатия клавиш, ввода мышью, ввода с контроллера и так далее. Метод GetAxisRaw немного сложнее для понимания, поэтому мы вернемся к этому позже.

Затем мы обновляем позицию нашего gameObject на новую позицию, определенную созданием нового Vector2 . Vector2 принимает 2 параметра, которые являются его значениями x и y соответственно. Для значения x мы предоставляем сумму текущей позиции объекта и его скорости , эффективно добавляя некоторую величину в каждом кадре, когда клавиша нажимается на его позицию.

Сохраните этот скрипт и возвращайтесь в Unity. Unity автоматически обновит все сценарии после успешной компиляции, поэтому вам не придется повторно подключать сценарий снова и снова.

Теперь, когда вы закончите, измените значение скорости в свойствах GameObject на 0,8. Это важно, потому что более высокое значение заставит игрока двигаться слишком быстро.

Значение скорости

Теперь нажмите Play и увидите свою первую маленькую игру в действии!

Играть

Попробуйте нажать клавиши со стрелками и перемещаться. Чтобы остановить игру, просто нажмите Play еще раз. Вы даже можете регулировать скорость в режиме реального времени, чтобы вам не приходилось останавливаться и запускать ее постоянно.

На следующем уроке мы узнаем о твердых телах и столкновениях.