ПроЭктировщик
Регистрация: 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
|