Так, давайте создадим новый файл в Blitz3D, назовем его "main.bb", и сохраним его в какую-нибудь папку, к примеру "Quest". Кидаем в эту же папку, файл поставляемый с установочными файлами Xors3D, "xors3d.bb". Теперь, открываем "main.bb" и пишем туда следующее:
Include "xors3d.bb"
xGraphics3D 800,600,32,0,True
xSetBuffer xBackBuffer()
While Not xKeyHit(1)
xUpdateWorld
xRenderWorld
xFlip
Wend
End
Ну, тут всё понятно. Создаем окно, устанавливаем буфер, и запускаем цикл. Теперь, давайте создавать нашего игрока. Квест наш будет от первого лица, так что игрок - это сфера+камера. Давайте, напишем функцию создания игрока:
Function InitPlayer()
player=xCreateSphere()
xEntityAlpha player,0
camera=xCreateCamera(player)
End Function
Теперь, вставьте InitPlayer() перед главным циклом. Также, не забудьте объявить player и camera глобальными, в дальнейшем нам это понадобится. Так, игрок создаётся, пора научить его передвигаться. Пишем функцию перемещения игрока:
Function UpdatePlayer()
mxspd#=xMouseXSpeed()*0.05 ; Получаем координаты передвижения мышки по Х
myspd#=xMouseYSpeed()*0.05 ; Получаем координаты передвижения мышки по Y
xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2 ; Передвигаем мышку в центр окна
If xEntityPitch(camera)+myspd<-89 xRotateEntity camera,-89,0,0 ; Проверяем угол поворота камеры по X
If xEntityPitch(camera)+myspd>89 xRotateEntity camera,89,0,0 ; Проверяем угол поворота камеры по X
xRotateEntity camera,xEntityPitch(camera)+myspd,0,0 ; Поворачиваем камеру по X
xRotateEntity player,0,xEntityYaw(player)-mxspd,0 ; Поворачиваем камеру по Y
If xKeyDown(17) xMoveEntity player,0,0,0.1
If xKeyDown(31) xMoveEntity player,0,0,-0.1
If xKeyDown(30) xMoveEntity player,-0.1,0,0
If xKeyDown(32) xMoveEntity player,0.1,0,0
Select True
Case xKeyDown(29)
xPositionEntity camera,0,0,0
Case Not xKeyDown(29)
xPositionEntity camera,0,2,0
End Select
End Function
Теперь, наш игрок умеет ходить, вертеть головой и сидеть. Ну, отлично! Давайте, ещё добавим немного физики! Изменяем функцию InitPlayer() следующим образом:
Function InitPlayer()
player=xCreateSphere()
xEntityAlpha player,0
xEntityAddSphereShape player,10,1
camera=xCreateCamera(player)
End Function
Так, запускаем игру и видим что нас уносит вниз, это действует физика Xors3D. Команда
xEntityAddSphereShape entity, mass#, radius# добавляет физическое тело круглой формы. В неё передается три параметра:
entity - объект, к которому надо добавить физическое тело
mass# - масса физического тела
radius# - радиус физического тела
Давайте, добавим временную платформу, чтобы наш игрок не уходил далеко вниз:
Function InitScene()
platform=xCreateCube()
xScaleEntity platform,10,1,10
xPositionEntity platform,0,-3,0
xEntityAddBoxShape platform,0
End Function
После, добавьте строчку InitScene() после InitPlayer() перед циклом. Запускаем, и видим как наш игрок мягко падает на куб. Теперь расскажу про команду
xEntityAddBoxShape entity, mass#, width#, height#, depth#, которая добавляет физическое тело параллепидного типа:
entity - это объект, к которому добавляется физическое тело
mass# - масса физического тела (в дальнейшем, я буду использовать сокрашение ф.т.)
width# - ширина ф.т.
height# - высота ф.т.
depth# - глубина нашего ф.т.
Примечание: Если значение mass# сделать равным нулю, то объект становиться статичным. Также, если объект стандартный примитив, то не обязательно передавать какие-либо параметры, помимо entity и mass#, Xors3D сам доделывает нужную работу.
Ну, похоже на сегодня всё! Ждите продолжения! И удачи Вам!