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

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

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

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

pln=CreatePlane()

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

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

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

tex=LoadTexture("Picture.bmp")

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

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

EntityTexture pln,tex

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

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

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