5. 2Д в 3Д

 

Итак, как я уже говорил, нам не с чем сравнивать положение нашего объекта, поэтому он так странно двигается.

Для этой главы нам понадобятся: код из прошлого урока, и текстура. Что такое текстура? Для тех кто не знает попробую объяснить:

 

Текстура – это картинка в любом формате (самые популярные это .jpg, .bmp, .tga, .pcx, .png и.т.д.), которой мы закрашиваем какой-нить объект. Если объект большой, а текстура – нет, то она накладывается как бы повторяющимися квадратами. Вы наверняка видели в каких нибудь трёхмерных играх повторяющуюся траву, скалы – где-то это видно сразу, где-то сильно скрыто. Когда создаётся объект, он создаётся белым, а когда мы его текстурируем – то получается покрываем его картинкой – текстурой. Ну, будем надеяться, что кто этого не знал – примерно понял. В общем возьмите любую картинку из перечисленных форматов, и поместите её в ту же папку, где у вас сохранён этот код программы.

 

Сделаем мы так: создадим плоскость, которая будет находиться на одном месте, и относительно неё будет хорошо видно, что наш кубик всё таки движется.

 

pln=CreatePlane()

 

Эта команда, также как и остальные команды создаёт объект, на этот раз плоскость (Plane). Что это такое? Ну, плоскость – это и есть плоскость. Она плоская и бесконечная. Да, один момент – плоскость видна только с одной стороны – с другой она невидимая (как и спрайт, кстати)!

 

Поставьте эту команду перед циклом, после создания куба, и если вы запустите программу… лучше не надо! J Перейдём-ка мы сразу дальше!

 

После создания плоскости загрузим текстуру из файла:

 

tex=LoadTexture("Picture.bmp")

 

Эта команда загружает текстуру из файла Picture.bmp (это у меня так картинка называлась, а вы измените имя файла в кавычках на своё (кавычки нужно оставить), кстати, там можно писать полный путь к файлу, например “C:\Games\MyGame\MyPic.jpg” или “.\Data\Pics\Texture.jpg”)

 

Так, плоскость есть, текстура есть – осталось только затекстурировать эту плоскость:

 

EntityTexture pln,tex

 

Синтакс: EntityTexture объект, текстура – эта команда элементарно покрывает заданный объект заданной текстурой J.

Да, и ещё одно – эта текстура наверняка будет смотреться мелко, поэтому я советую вставить такую команду после загрузки текстуры:

 

ScaleTexture tex,10,10

 

Она просто расширяет данную текстуру в10 раз по ширине и в 10 раз по высоте.

Вот, вроде, и всё готово! Теперь у нас внизу есть плоскость, а куб как бы ездит по ней!

Весь код:

 

Graphics3D 640,480,16,1

SetBuffer BackBuffer()

 

cam=CreateCamera()

PositionEntity cam,0,5,-10

 

lit=CreateLight()

 

cub=CreateCube()

ScaleEntity cub,1,.5,2

 

pln=CreatePlane()

tex=LoadTexture("Picture.bmp")

ScaleTexture tex,30,30

EntityTexture pln,tex

 

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

 

 PointEntity cam,cub

 

 UpdateWorld

 RenderWorld

 

 Flip

 

Until KeyHit(1)

 

End

 

…а теперь попробуйте сами затекстурировать куб!

 

 

 Оглавление:

 

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