3. Свобода и Власть 3Д (0) Можно,
конечно, до посинения смотреть на разные там вращающиеся кубы, сферы, конусы,
цилиндры, свет, камеры – но когда-нибудь это надоест. Кроме того – игра (а
ведь мы именно игры хотим писать а не всякие там трёхмерные абстрактные
пейзажи) требует ввода чего-нить-там с клавиатуры… Ну,
тогда давайте разбираться с перемещением предмета. Я надеюсь, что предыдущие
уроки вы хорошо освоили, так что начнём сразу с такого шаблона:
Здесь
мы (по порядку) инициализируем графику, создаём камеру, свет, куб и в цикле
всё это рендерим и выводим на экран, пока не будет нажата клавиша Esc. Обратите внимание, что здесь мы поменяли позицию
камеры (а не куба, как в прошлый раз), и теперь она имеет координаты X=0 Y=5 Z=-10. В итоге,
получилось, что мы смотрим на куб сзади, и чуть-чуть сверху… В
нашем распоряжении имеется куб. Наша миссия двигать его, в направлении,
задаваемом с клавиатуры. Итак, новые команды: KeyDown(сканкод) –
(вообще-то не команда, а функция) – проверяет, нажата ли соответствующая
клавиша. В скобках нужно указать сканкод клавиши (Сканкоды клавиш можно
узнать в хелпе Блитц3Д, в разделе Command
Reference). Мы будем управлять клавишами управления курсора и
манипулятором типа мышь J. Значит сразу напишу сканкоды (всем запомнить –
пригодится): кнопка вверх – 200, вниз – 208, влево – 203, вправо – 205. С мышой потом. Далее… MoveEntity объект, перемещение по X, по Y, по Z –
перемещает объект относительно своей собственной системы координат (помните
писал J). Так,
у нас есть команда проверки нажатия клавиш, и есть команда перемещения
объекта… осталось только связать их вместе. Как это сделать? Очевидно, просто
надо поставить условие – н-р. ЕСЛИ НАЖАТА кнопка ВВЕРХ то ПЕРЕДВИНУТЬ ОБЪЕКТ
ВПЕРЁД, ну, и так далее… Я надеюсь вы прочитали туториал по основам
БлитцБейсика, поэтому команду условия IF я уж объяснять не буду… А
так это должно выглядеть:
Поставьте
это условие в начало цикла, и запустите прогу. Теперь, когда вы будете
нажимать кнопку вверх, куб будет двигаться по направлению своей оси Z… то есть вперёд! По
аналогии сделаем остальные условия:
Полностью
код выглядит так:
Ну
– кубик двигается! Что ещё нужно для счастья? Я думаю достаточно… J
…но Блитц3Д предоставляет нам очень много возможностей на этой почве, и в
следующих уроках мы постараемся уяснить самые важные. |
Оглавление: 0. Введение 5. 2Д в 3Д 7. Родительская зависимость или Привязки 9. Коллизион Детекшн или как устроен мир… 10. Первая 3Д игра. Часть 0 – основы движка 11. Первая 3Д игра. Часть 1 – разработка движка 12. Первая 3Д игра. Часть 2 – устранение багов 13. Первая 3Д игра. Часть 3 – внешний вид 14. Первая 3Д игра. Часть 4 – от массива к спискам 15. Первая 3Д игра. Часть 5 – оптимизация кода 16. Первая 3Д игра. Часть 6 – завершение 17. Выведение |