Показать сообщение отдельно
Старый 20.10.2009, 19:44   #8
SKA_DIMKA
ПроЭктировщик
 
Аватар для SKA_DIMKA
 
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений
(для 53 пользователей)
Ответ: Копание земли...

Вот как и обещал, справка по команде с примером (если у кого нет)

ModifyTerrain terrain,grid_x,grid_z,height#[,realtime]
Параметры
terrain - указатель ландшафта
grid_x - координата x в сетке ландшафта
grid_y - координата y в сетке ландшафта
height# - высота точки ландшафта. Должна быть в пределах 0-1.
realtime (не обязательно) - True - изменить ландшафт немедленно. False - изменить ландшафт при очередном выполнении команды RenderWorld. Значение по умолчанию - False.

Описание
Устанавливает высоту точки ландшафта.
Example
; Пример ModifyTerrain 
; --------------------- 

Graphics3D 640,480 
SetBuffer BackBuffer() 

terra_size=32 ; установим размер ландшафта и число сегментов по каждой стороне 
x_scale=10 ; масштаб по оси x 
y_scale=50 ; масштаб по оси y 
z_scale=10 ; масштаб по оси z 
marker_x=terra_size/2 ; координата маркера по оси x 
marker_z=terra_size/2 ; координата маркера по оси z 

camera=CreateCamera() 
PositionEntity camera,(terra_size*x_scale)/2,50,0 ; позиция камеры для лучшего обзора! 
RotateEntity camera,30,0,0 ; поворот камеры 

light=CreateLight() 
RotateEntity light,90,0,0 

; создаем ландшафт 
terra=CreateTerrain(terra_size) 
ScaleEntity terra,x_scale,y_scale,z_scale 

; текстурируем его 
grass_tex=LoadTexture("media/mossyground.bmp") 
EntityTexture terra,grass_tex 

; создаем маркер 
marker=CreateSphere() 
ScaleEntity marker,1,1,1 
EntityColor marker,255,0,0 

While Not KeyDown(1) 

; курсорными клавишами управляем маркером 
If KeyHit(205)=True Then marker_x=marker_x+1 
If KeyHit(203)=True Then marker_x=marker_x-1 
If KeyHit(208)=True Then marker_z=marker_z-1 
If KeyHit(200)=True Then marker_z=marker_z+1 

; устанавливаем высоту ландшафта в координаиах маркера 
marker_y#=TerrainHeight(terra,marker_x,marker_z) 

; клавиша A - увеличить высоту 
If KeyDown(30)=True 
If marker_y#<1 Then marker_y#=marker_y#+0.005 
ModifyTerrain terra,marker_x,marker_z,marker_y# 
EndIf 

; клавиша Z - уменьшить высоту 
If KeyDown(44)=True 
If marker_y#>0 Then marker_y#=marker_y#-0.005 
ModifyTerrain terra,marker_x,marker_z,marker_y# 
EndIf 

; Маркер позиционируем маркер, принимая во внимание масштабы ландшафта по осям x, y и z 
PositionEntity marker,marker_x*x_scale,marker_y#*y_scale,marker_z*z_scale 

RenderWorld 

Text 0,0,"Use cursor keys to move marker over the terrain" 
Text 0,20,"Press A or Z to alter height of terrain at marker's position" 
Text 0,40,"Terrain Height: "+marker_y# 

Flip 

Wend 

End
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Baisangur (20.10.2009)