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

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

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). Мы будем управлять клавишами управления курсора и манипулятором типа мышь . Значит сразу напишу сканкоды (всем запомнить – пригодится): кнопка вверх – 200, вниз – 208, влево – 203, вправо – 205. С мышой потом.

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

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

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