|
2D
в 3D
Итак, как я уже говорил, нам не с чем сравнивать положение
нашего объекта, поэтому он так странно двигается. Для этой главы нам
понадобятся: код из прошлого урока, и текстура. Что такое текстура?
Для тех кто не знает попробую объяснить:
Текстура – это картинка в любом формате (самые популярные это .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
…а теперь попробуйте сами затекстурировать куб!
Автор: Scaven Razor Blade
http://unblitz.narod.ru/
scaven@bk.ru |