Создает скайбокс космоса
Принцип действия:
Создается 3D мир по которому на определенном расстоянии расбрасываются спрайты звезд.
Камера, находящаяся в центре, "фоткает" сцену в шести направлениях и сохраняет картинки в папку sky\
По желанию в функции createworld() можно добавить еще декорации, например модели планет.
AppTitle "spacebox"
;sq - размер скайбокса
;r - радиус расброса звезд
;ns - количество звезд
;ni - Количество видов звезд
Const sq=512,name$="space"
Const r=300,ns=2000,ni=7
Const wi=sq,he=sq
Dim sp(ni,ns)
Dim s(ni)
Global cam,k,t$,im
SeedRnd MilliSecs()
Graphics3D wi,he,32,2
SetFont LoadFont("Arial",18)
SetBuffer BackBuffer()
createworld()
;MAIN_____________________________________________________
For k=1 To 6
;If KeyHit(57) Then updatecam()
;WaitKey()
updatecam()
UpdateWorld
RenderWorld
;Text wi/2,he/2,t+"*",1,1
Flip
image()
Cls
Next
End
;__________________________________________________________
;FUNCTIONS
Function image()
im=CreateImage(sq,sq)
GrabImage im,0,0
SaveImage (im,"sky\"+name+t+".bmp")
End Function
Function updatecam()
Select k
Case 1
RotateEntity cam,0,0,0
t="fr"
Case 2
RotateEntity cam,0,90,0
t="lf"
Case 3
RotateEntity cam,0,180,0
t="bk"
Case 4
RotateEntity cam,0,-90,0
t="rt"
Case 5
RotateEntity cam,90,0,0
t="dn"
Case 6
RotateEntity cam,-90,0,0
t="up"
End Select
End Function
Function createworld()
cam=CreateCamera()
CameraRange cam,40,500
For i=1 To ni
;Загрузка спрайтов звезд
;ni-количество спрайтов
s(i)=LoadSprite("stars\"+i+".png",1)
;способ загрузки спрайтов (в данном примере загружаются несколько
; файлов с именами "1.png","2.png","2.png"... из папки "stars\"
ScaleSprite s(i),1,1
For u=1 To ns
sp(i,u)=CopyEntity(s(i))
PositionEntity sp(i,u),Rand(-r,r),Rand(-r,r),Rand(-r,r)
Next
Next
End Function