3. Свобода и Власть 3Д (0)

 

Можно, конечно, до посинения смотреть на разные там вращающиеся кубы, сферы, конусы, цилиндры, свет, камеры – но когда-нибудь это надоест. Кроме того – игра (а ведь мы именно игры хотим писать а не всякие там трёхмерные абстрактные пейзажи) требует ввода чего-нить-там с клавиатуры…

 

Ну, тогда давайте разбираться с перемещением предмета. Я надеюсь, что предыдущие уроки вы хорошо освоили, так что начнём сразу с такого шаблона:

 

Graphics3D 640,480,16,1

SetBuffer BackBuffer()

 

cam=CreateCamera()

PositionEntity cam,0,5,-10

 

lit=CreateLight()

 

cub=CreateCube()

 

Repeat

 

 

 

 

 UpdateWorld

 RenderWorld

 

 Flip

 

Until KeyHit(1)

 

End

 

Здесь мы (по порядку) инициализируем графику, создаём камеру, свет, куб и в цикле всё это рендерим и выводим на экран, пока не будет нажата клавиша Esc. Обратите внимание, что здесь мы поменяли позицию камеры (а не куба, как в прошлый раз), и теперь она имеет координаты X=0 Y=5 Z=-10. В итоге, получилось, что мы смотрим на куб сзади, и чуть-чуть сверху…

 

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

 

KeyDown(сканкод) – (вообще-то не команда, а функция) – проверяет, нажата ли соответствующая клавиша. В скобках нужно указать сканкод клавиши (Сканкоды клавиш можно узнать в хелпе Блитц3Д, в разделе Command Reference). Мы будем управлять клавишами управления курсора и манипулятором типа мышь J. Значит сразу напишу сканкоды (всем запомнить – пригодится): кнопка вверх – 200, вниз – 208, влево – 203, вправо – 205. С мышой потом.

 

Далее…

 

MoveEntity объект, перемещение по X, по Y, по Z – перемещает объект относительно своей собственной системы координат (помните писал J).

 

Так, у нас есть команда проверки нажатия клавиш, и есть команда перемещения объекта… осталось только связать их вместе. Как это сделать? Очевидно, просто надо поставить условие – н-р. ЕСЛИ НАЖАТА кнопка ВВЕРХ то ПЕРЕДВИНУТЬ ОБЪЕКТ ВПЕРЁД, ну, и так далее… Я надеюсь вы прочитали туториал по основам БлитцБейсика, поэтому команду условия IF я уж объяснять не буду…

 

А так это должно выглядеть:

 

If KeyDown(200) MoveEntity cub,0,0,.1

 

Поставьте это условие в начало цикла, и запустите прогу. Теперь, когда вы будете нажимать кнопку вверх, куб будет двигаться по направлению своей оси Z… то есть вперёд!

 

По аналогии сделаем остальные условия:

 

If KeyDown(208) MoveEntity cub,0,0,-.1

If KeyDown(203) MoveEntity cub,-.1,0,0

If KeyDown(205) MoveEntity cub,.1,0,0

 

Полностью код выглядит так:

 

Graphics3D 640,480,16,1

SetBuffer BackBuffer()

 

cam=CreateCamera()

PositionEntity cam,0,5,-10

 

lit=CreateLight()

 

cub=CreateCube()

 

Repeat

 

 If KeyDown(200) MoveEntity cub,0,0,.1

 If KeyDown(208) MoveEntity cub,0,0,-.1

 If KeyDown(203) MoveEntity cub,-.1,0,0

 If KeyDown(205) MoveEntity cub,.1,0,0

 

 

 UpdateWorld

 RenderWorld

 

 Flip

 

Until KeyHit(1)

 

End

 

Ну – кубик двигается! Что ещё нужно для счастья? Я думаю достаточно… J …но Блитц3Д предоставляет нам очень много возможностей на этой почве, и в следующих уроках мы постараемся уяснить самые важные.

 

 

 Оглавление:

 

0.  Введение

1.  В начале была Тьма

2.  Есть ли жизнь в DirectX

3.  Свобода и Власть 3Д (0)

4.  Свобода и Власть 3Д (1)

5.  2Д в 3Д

6.  Трёхмерный курсор

7.  Родительская зависимость или Привязки

8.  Фишки с привязками

9.  Коллизион Детекшн или как устроен мир…

10.     Первая 3Д игра. Часть 0 – основы движка

11.     Первая 3Д игра. Часть 1 – разработка движка

12.     Первая 3Д игра. Часть 2 – устранение багов

13.     Первая 3Д игра. Часть 3 – внешний вид

14.     Первая 3Д игра. Часть 4 – от массива к спискам

15.     Первая 3Д игра. Часть 5 – оптимизация кода

16.     Первая 3Д игра. Часть 6 – завершение

17.     Выведение

 

 

 

 

Используются технологии uCoz