Тема: Ланшафт
Показать сообщение отдельно
Старый 01.03.2007, 21:09   #15
Vyacheslav
ПроЭктировщик
 
Регистрация: 03.01.2007
Сообщений: 133
Написано одно полезное сообщение
(для 4 участников)
Re: Ланшафт

Ну и так еще, если массивом, вроде удобнее:

 
Graphics3D 800,600,32,2
SetBuffer BackBuffer() 
HidePointer()
ter_size=8
camera=CreateCamera() 
PositionEntity camera,50,40,-50 
light=CreateLight() 
RotateEntity light,90,0,0 
ter=CreateTerrain(ter_size) 
ScaleEntity ter,1,10,1
EntityColor ter,150,150,200
Restore ter_data
Read ter_mod_count 
For x=1 To 7
 For z=1 To 7
   Read y_mod#
   ModifyTerrain ter,x,z,y_mod#
  
  Next
 
Next 
 
While Not KeyDown(1) 
 Camera_Look(camera)
 Camera_Free_Fly(camera)
RenderWorld 
Flip 
Wend 
End  
Function Camera_Look(cam,speedx#=2,speedy#=2,dang=-89,upang=89)
 mxs=MouseXSpeed()
 mys=MouseYSpeed()
 xrot#=EntityPitch(cam)
 yrot#=EntityYaw(cam)
 If(xrot#<upang)And(mys>0)Then xrot#=xrot#+speedx#*mys/10  
 If(xrot#>upang)And(mys>0)Then xrot#=upang 
 If(xrot#>dang)And(mys<0)Then xrot#=xrot#+speedx#*mys/10 
 If(xrot#<dang)And(mys<0)Then xrot#=dang  
 yrot=yrot-speedy#*mxs/10 
 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
 RotateEntity cam,xrot,yrot,0
End Function
Function Camera_Free_Fly(Obj,mf#=.5,mb#=.5,ml#=.5,mr#=.5)
 If KeyDown(17) Then MoveEntity Obj,  0 ,0, mf#;W
 If KeyDown(31) Then MoveEntity Obj,  0 ,0,-mb#;S 
 If KeyDown(30) Then MoveEntity Obj,-ml#,0,  0 ;A
 If KeyDown(32) Then MoveEntity Obj, mr#,0,  0 ;D
End Function
.ter_data
Data 0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0
Data 0,0,0,1,1,0,0,0
Data 0,0,0,0.5,0,0,0,0
Data 0,0,0,1,1,0,0,0
Data 0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0
(Offline)
 
Ответить с цитированием