Тема: Космос
Показать сообщение отдельно
Старый 18.08.2006, 12:54   #11
GoodWin
ПроЭктировщик
 
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений
(для 19 пользователей)
Re: Космос

Вот что у меня получилось:
;GoodWin
;[email protected]
;
Отдельное спасибо tormoz'у

AppTitle "Полет через звезды"

Global width% = 800, height% = 600
Graphics3D width,height,32,2
SetBuffer BackBuffer()

Include "sky.bb"

Const kUp% = 200, KDown% = 208, KLeft% = 203, KRight% = 205, Kback%= 31 ,KAccel%=30

Global camera, player, sky, stars, tangaj#, kren#, accel#
Global star_sprite = LoadSprite ("star.jpg",41) : HideEntity star_sprite
Global star_sprite2 = LoadSprite ("star2.jpg",41) : HideEntity star_sprite2

Type star
Field entity
End Type

player=CreateSphere()
camera=CreateCamera(player)
PositionEntity camera,0,0,-10;
CameraRange Camera,.1,10000000000000

Light=CreateLight(1)
RotateEntity Light,0,-90,0
AmbientLight 50,50,50

sky=CreatePivot ()

For i=1 To 400
create_dinamic_star
Next

For
i=1 To 400
create_star()
Next

While Not KeyHit
(1)


ControlsPlayers
()
update_star()


PositionEntity
sky,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1)

UpdateWorld
RenderWorld
Text
10,10,"Полет через звезды"
Flip
Wend
End

;Функции=========================================== =
Function ControlsPlayers ()
v#=.1
If accel#<0 Then
accel#=0
ElseIf accel#>5
accel#=5
Else
accel#=accel#+MouseDown(1)*v#-MouseDown(2)*v#
EndIf
MoveEntity
player,0,0,accel#
TurnEntity player,MouseYSpeed(),MouseXSpeed(),o
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
End Function

Function
create_Star ()
sprite=CopyEntity(star_sprite2,sky)
scale=75
ScaleSprite sprite,scale,scale
EntityFX sprite,41
EntityOrder sprite,8
SpriteViewMode sprite,2
PositionEntity sprite,0,0,0
RotateEntity sprite,Rnd(-90,90),Rnd(0,360),0
MoveEntity sprite,0,0,900
End Function

Function
create_dinamic_star ()
sp.star=Newstar
sp
\entity=CopyEntity(star_sprite)
scale#=.2
ScaleSprite sp\entity,scale#,scale#
EntityFX sp\entity,41
EntityOrder sp\entity,8
PositionEntity sp\entity,0,0,0
RotateEntity sp\entity,Rnd(-90,90),Rnd(0,360),0
MoveEntity sp\entity,0,0,Rnd(50,150)
SpriteViewModesp\entity,1
End Function

Function update_Star()
For s.star = Each star
dist
#=EntityDistance(s\entity,player)
Ifdist#>100 Then
PositionEntity s\entity,EntityX#(camera,1),EntityY#(camera,1),EntityZ#(camera,1)
RotateEntity s\entity,(EntityPitch#(camera,1)+Rnd(-90,90)),(EntityYaw#(camera,1)+Rnd(-90,90)),0
MoveEntity s\entity,0,0,Rnd(50,100)
EndIf
Next
Delete s
EndFunction
в аттаче два изображения...
(Offline)
 
Ответить с цитированием