В разделе статей буду выкладывать не большие уроки по Blitz3D. Уроки пишутся по моему, не большому опыту, поэтому надеюсь спроса большого с них не будет. Всё, что знаю напишу.Надеюсь вы уже установили движок и знаете куда писать код и как компилировать.Форум
Начало. Начнём с создания 3D окна в мир игры:
Code
Graphics3D 640,480,16,1
SetBuffer BackBuffer()
Repeat
Until KeyHit(1)
End
Теперь попытаюсь объяснить, что мы написали.
Graphics3D 640,480,16,1 это строка открывает окно в 3D мир Устанавливает 3D Графический способ. Эта команда должна быть выполнена перед любой другой 3D командой, иначе программы возвратят ошибку. Синтакс: Graphics3D ширина, высота, глубина цвета, режим Ширина, высота – размер создаваемого экрана (в пикселях) Глубина – глубина цвета – 16, 24 или 32 бита на пиксель. Цветовой способ с 16 частицами показывает наименьшее количество количества цветов, 65536. И с 32 частицами цветовые способы с 24 частицами показывают более чем 16 миллионов Цвета и в результате предлагают лучшую картину качества, хотя могут кончаться более медленными программами, чем с 16 частицами. Режимы: 0 – оконный во время разработки (если возможно), полноэкранный в .exe формате; 1 – всегда полноэкранный 2 – всегда оконный 3 – всегда оконный, с возможностью изменения размеров окна. SetBuffer BackBuffer() – Установить поток, буфер. Repeat Until KeyHit(1) – Между этими двумя командами будет происходить основной цикл игры. При нажатии кнопки ESC начинает читать следующую команду. End – Завешает программу
Продолжим.
cam=CreateCamera() – это самая основная команда в 3D программах. Это камера, наши глаза. Lit=CreateLight() – эта команда создает источник света. Можно изменять тип света, в скобки можно вписать следующие значения: 1:направленный 2:точка 3: пятно
Свет – это объект, а это значит, что им тоже можно управлять, как и всеми объектами.
cub=CreateCube()–3D объект куб. Кроме куда можно ещё создать объекты: CreateSphere ( [segments][,parent] ) CreateCylinder ( [segments][,parent][,solid] ) CreateCone ( [segments][,parent][,solid] )
PositionEntity cub,0,0,5– эта команда помещает объект в позицию.
Объекты помещены, используя X, Y, Z системы координат. X, Y и Z каждый имеет собственную ось. Определяя ценность для каждой оси, Вы можете помещать объект где-нибудь в 3D пространстве. 0,0,0 – центр. Положительный Z находиться перед камерой, а отрицательный позади камеры. Изменение X это наклон в бок. Y будет изменять положение лево право.
ScaleEntity cub,1,0.3,1 – Изменяет размер объекта RotateEntity cub,0,40,0 – Вращение объекта. TurnEntity cub,.6,.2,.3 - TurnEntity entity,pitch#,yaw#,roll#,[,global] Tpitch# - наклон вперед / назад. Yaw#- переворот налево / вправо. Roll# - наклон налево / вправо. UpdateWorld – UpdateWorld [anim_speed#] anim_speed# (необязательный) – скорость мультипликации. Установлен по умолчанию в 1. RenderWorld [tween#]Показывает все объекты в мире.
Ура!Вот , что получилось:
Code
Graphics3D 640,480,16,1 SetBuffer BackBuffer()
cam=CreateCamera()
lit=CreateLight()
cub=CreateCube()
PositionEntity cub,0,0,5
PositionEntity cub,0,0,5
ScaleEntity cub,1,0.3,1
RotateEntity cub,0,40,0
Repeat
TurnEntity cub,.6,.2,.3
TurnEntity lit,5,5,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
Управление объектами. EntityColor cub,0,255,0– Устанавливает цвет объекта. Зеленые, красные и синие (R,G,B) в диапазоне 0-255. Default цвет – 255,255,255.
If KeyDown(208) MoveEntity cub,0,0,-.1- При нажатие кнопки в верх объект начинает двигатся вперёд, сканкод 200. При нажатие кнопки вниз объект начинает двигаться назад, сканкод 208. Чтобы узнать сканкод каждой кнопки в справке есть раздел Scancodes, там можно узнать номер каждой кнопки. Команда MoveEntity перемещает объект в пространстве.
If KeyDown(203) TurnEntity cub,0,1,0- поворот куба.
Вот теперь у нас получилась маленькая игра.
Code
Graphics3D 640,480,16,1
SetBuffer BackBuffer()
lit=CreateLight()
cub=CreateCube()
EntityColor cub,0,255,0
cam=CreateCamera(cub)
stolb=CreateCube()
ScaleEntity stolb,1,4,1
PositionEntity stolb,-7,0,7
stolb2=CreateCube()
ScaleEntity stolb2,1,4,1
PositionEntity stolb2,7,0,7
plan=CreatePlane()
EntityColor plan,0,0,255
PositionEntity plan,0,-1,5
PositionEntity cam,0,3,-5
Repeat
If KeyDown(200) MoveEntity cub,0,0,.1
If KeyDown(208) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
Столкновение с объектами.
Вы уже заметили, что кубик проходит сквозь стены. Исправим, сделаем стены твёрдыми.
Const TypeCub=1,TypeStolb=2 – И так сначала мы создали две константы – TypeCub, равная единице и TypeStolb Равная двойке . EntityType – присваивает данному объекту данный тип. В нашем случае, тип – это просто цифры. Здесь мы вместо цифр использовали константы – чтобы не запутаться, да и чтобы легко можно было прочитать – к какому типу этот объект относится, и с чем соприкасается. Collision -Первый тип для столкновений. Второй тип должен столкнуть.
Типы столкновений. 1: столкновения « сфера к сфере « 2: столкновения « сфера к многоугольнику» 3: столкновения « сфера к box»
Действия объекта при столкновении. 1: Стоп, остановка. 2: полное столкновение со скольжением
EntityRadius cub,2 – Радиус столкновения объекта.
Ну вот теперь в нашей маленькой игре кубик врезается в стены:
[spoiler]
Code
Graphics3D 640,480,16,1
SetBuffer BackBuffer()
Const TypeCub=1,TypeStolb=2
lit=CreateLight()
cub=CreateCube()
EntityColor cub,0,255,0
EntityType cub,TypeCub
cam=CreateCamera()
stolb=CreateCube()
ScaleEntity stolb,1,4,1
PositionEntity stolb,-7,0,7
EntityType stolb,TypeStolb
stolb2=CreateCube()
ScaleEntity stolb2,1,4,1
PositionEntity stolb2,7,0,7
EntityType stolb2,TypeStolb
EntityRadius cub,2
plan=CreatePlane()
EntityColor plan,0,0,255
PositionEntity plan,0,-1,5
PositionEntity cam,0,3,-5
Collisions TypeCub,TypeStolb,2,3
Repeat
If KeyDown(200) MoveEntity cub,0,0,.1
If KeyDown(208) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
Столкновение с объектами.
Вы уже заметили, что кубик проходит сквозь стены. Исправим, сделаем стены твёрдыми.
Const TypeCub=1,TypeStolb=2 – И так сначала мы создали две константы – TypeCub, равная единице и TypeStolb Равная двойке . EntityType – присваивает данному объекту данный тип. В нашем случае, тип – это просто цифры. Здесь мы вместо цифр использовали константы – чтобы не запутаться, да и чтобы легко можно было прочитать – к какому типу этот объект относится, и с чем соприкасается. Collision -Первый тип для столкновений. Второй тип должен столкнуть.
Типы столкновений. 1: столкновения « сфера к сфере « 2: столкновения « сфера к многоугольнику» 3: столкновения « сфера к box»
Действия объекта при столкновении. 1: Стоп, остановка. 2: полное столкновение со скольжением
EntityRadius cub,2 – Радиус столкновения объекта.
Ну вот теперь в нашей маленькой игре кубик врезается в стены:
Code
Graphics3D 640,480,16,1
SetBuffer BackBuffer()
Const TypeCub=1,TypeStolb=2
lit=CreateLight()
cub=CreateCube()
EntityColor cub,0,255,0
EntityType cub,TypeCub
cam=CreateCamera()
stolb=CreateCube()
ScaleEntity stolb,1,4,1
PositionEntity stolb,-7,0,7
EntityType stolb,TypeStolb
stolb2=CreateCube()
ScaleEntity stolb2,1,4,1
PositionEntity stolb2,7,0,7
EntityType stolb2,TypeStolb
EntityRadius cub,2
plan=CreatePlane()
EntityColor plan,0,0,255
PositionEntity plan,0,-1,5
PositionEntity cam,0,3,-5
Collisions TypeCub,TypeStolb,2,3
Repeat
If KeyDown(200) MoveEntity cub,0,0,.1
If KeyDown(208) MoveEntity cub,0,0,-.1
If KeyDown(203) TurnEntity cub,0,1,0
If KeyDown(205) TurnEntity cub,0,-1,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
В дальнейшем буду добавлять ещё уроки. Если я где то ошибся, то пожалуйста сообщите.
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Уроки по Blitz 3D.Часть 1.», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.