Программируем ездящий куб

Всем доброго времени суток, сегодня я продолжу разработку компьютерной игры и сегодня я буду делать простенькую игру с передвижением кубика по сцене. Делаться все будет в новой игрушке. Просто делаем сцену с платформой, по которой будет ездить наш кубик, и будем задавать ему движение. Так же добавляем простой куб на сцену.

 

Чтобы камера двигалась за нашим объектом цепляем её на куб. Теперь, делаем скрипт с названием Moving, а камеру выставим чтобы она видела куб который мы добавили, в скрипт пишем вот такой код:

Простой код управления движения c#
Dante

 

Цепляем скрипт на наш куб, и запускаем сцену игры. Вот наш куб стал двигаться.

 

Давайте рассмотрим код что мы написали для движения. В начале задаем переменную speed, Потом в функции Update, что отвечает за по кадровое обновление, мы задали функцию SimpleMoving1(), и скрипт этой функции вы можете видеть ниже функции Update, в нем заданы параметры для кнопок. Давайте одну рассмотрим, чтобы понять принцип. В начале if(если) затем Input(ввод), GetKey(зажимается кнопка) и вот теперь в скобках указывается какая именно кнопка KeyCode(то есть вводится кнопка) W в нашем случае. Затем в фигурных скобках написано что происходит transform.position(изменяется позиция) и теперь += говорит что прибавляется к предыдущей позиции, то есть new Vector3(0,0,speed)*Time.deltaTime, где new Vector3(0,0,speed), координаты, а умножение на Time.deltaTime зависит от вашего компьютера, и рассматривать я его буду но потом. Пока просто делаем так.

 

Двигается конечно не идеально, а скорее как раньше двигался в играх, если нажать одновременно в две противоположные стороны наш куб останавливается. Давайте избавимся от этой проблемы. И напишем иной код. Код вот такого вида:

Код движения для unity3d на c#
Dante

 

Теперь давайте посмотрим что мы написали. Так же задали переменную speedи задали булевые переменные W, S, A, D. Затем в функции Update задали функцию SimpleMoving2(), И ниже написали непосредственно код самой функции. Что же в нем?

 

Как обратно рассмотрим одну кнопку, остальные сами догадываемся, для начала проверяем была ли нажата кнопка W (if(Input.GetKey(KeyCode.W)) и теперь проверяем не была ли нажата кнопка S (&& !S)) если это условие выполняется значение W=true(истинно). Восклицательный знак перед S означает что она не была нажата. Далее ниже по коду относящийся к этой кнопке код, строка 30ть если мы отпустили кнопку W (if(Input.GetKeyUp(KeyCode.W))) то значение W=false; и значит в коде выше если была зажата кнопка S у нее выполнится условие, так как у нас перестает быть зажато W. То есть если мы отпустили W зажатая в это время кнопка S выполняется. Ну и крайний на сегодня блок кода, это непосредственно тот который отвечает за смещение, то есть за изменения в пространстве (if(W) transform.position+=new Vector3(0,0,speed)*Time.deltaTime;) тоже что и выше, в статье, если зажата W то происходит смещение по вектору за заданное время.

 

Теперь недостатки данного скрипта, он несколько дерганный. Но если мы запустим его в Unity 3d то можем видеть что наш куб продолжает двигаться в сторону в которую мы зажали кнопку, пока мы не отпустим её. Что уже лучше чем в прошлый раз.

 

Кто не понял что за код я назначил на кнопки, то есть что значит срабатывание кнопки при её отпускании. Перечитываем прошлые уроки что я выполнял, а за кнопки в частности я говорил в уроке Events pressing (UnityKoder novice).

 

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *