Движение игрока в Unity может быть настроено по-разному и с использованием такого количества различных методов, что возможности практически безграничны. Вы можете делать отдельные вызовы кнопок, получать оси, получать преобразования, добавлять силу к компонентам твердого тела, список можно продолжить. И то, как вы его настроите, уникально для вас и, скорее всего, для игры, которую вы создаете. Я просто подумал, что напишу и опубликую статью о базовой и простой настройке движения игрока для 2D-космической стрелялки, которую я создаю.

Я собираюсь пропустить все детали создания игрока, потому что на данный момент это просто куб. Теперь, как нам заставить этот куб двигаться с вводом? Ну на самом деле это не так уж и сложно. Начните со своих переменных. Вам понадобится плавающая переменная скорости, чтобы определить желаемую скорость персонажа. Это может быть приватным и сериализованным, если вы не планируете делать с ним что-либо еще, чтобы его можно было настроить в инспекторе, или, если вы планируете добавить датчик скорости или что-то еще, вы можете сделать его общедоступным. Вам также понадобятся 2 другие переменные с плавающей запятой, чтобы назвать ваши горизонтальную и вертикальную оси.

Теперь, если вы хотите запустить своего персонажа в определенной позиции на экране, вы можете сделать это в начале, установив для transform.position новую желаемую начальную позицию Vector3.

Теперь, чтобы получить доступ к вводу движения, вам нужно создать метод. Затем в этом методе вы объявляете созданные вами горизонтальные и вертикальные переменные. Вы делаете это, устанавливая их = для Input.GetAxis («»). В кавычках вы вводите либо Horizontal, либо Vertical. Это система ввода Unity по умолчанию для вертикального и горизонтального перемещения. Есть несколько входов, которые вы можете увидеть и изменить по своему вкусу, перейдя на вкладку редактирования, затем перейдя к настройкам проекта и выбрав раздел «Диспетчер ввода», но это совсем другая статья.

В любом случае, после того, как вы установите свои входные данные, вам нужно заставить их преобразовать в новый векторный ввод с помощью функции transform.Translate и установить его равным новому Vector3. Вправо для горизонтального и вверх для вертикального. Затем правильная входная переменная, затем умножение на переменную скорости * Time.DeltaTime. Вам нужно сделать это для каждой из соответствующих входных осей.

В качестве альтернативы вы можете сделать переменную направления Vector3 с (горизонтально, вертикально, 0). входные переменные. Затем вы просто меняете transform.Translate = новый Vector3 (переменная направления * скорость * Time.DeltaTime). . Это устранит необходимость в 2 строках и поместит оба направленных ввода в одну строку кода.

После этого добавьте созданный вами метод в метод Update(), и теперь вы можете перемещать своего персонажа. Если вы хотите ограничить его экраном или сделать перекрытие, я также создам статью для этого. Спасибо за чтение.