Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
ракета в полёте + пламя из сопла
Выкладываю по просьбе одного товарища.
Type snar
Field entity%
Field fire_entity%
Field time%
End Type
Function create_snar()
s.snar=New snar
s\entity=CreateCylinder()
s\fire_entity=CreateSphere()
RotateEntity s\entity,0,0,90
ScaleEntity s\fire_entity,.4,.4,.4
PositionEntity s\fire_entity,1.5,0,0
RotateEntity s\fire_entity,0,-90,0
EntityParent s\fire_entity,s\entity
NameEntity s\entity,Handle(s)
Return Handle(s)
End Function
Function update_snr()
For s.snar=Each snar
If MilliSecs()-s\time>=5
create_fire_sprite(s\fire_entity)
s\time=MilliSecs()
EndIf
Next
End Function
;__________________________________________________
Type fire_sprite
Field entity%
Field time%
Field alpha#
Field size#
End Type
Function create_fire_sprite(parent)
f.fire_sprite=New fire_sprite
f\entity=CopyEntity(sprite)
RotateEntity f\entity,EntityPitch(parent,True),EntityYaw(parent,True),EntityRoll(parent,True)
PositionEntity f\entity,EntityX(parent,True),EntityY(parent,True),EntityZ(parent,True)
omega#=Rnd(0,359)
k#=0.2
MoveEntity f\entity,Cos(omega)*k#,Sin(omega)*k#,0
f\alpha#=1
f\size#=2
f\time=MilliSecs()
Return Handle(f)
End Function
Function update_fire_sprite()
For f.fire_sprite=Each fire_sprite
new_time=MilliSecs()
delta=new_time-f\time
f\time=new_time
f\alpha#=f\alpha#-delta*0.01
f\size#=f\size#-delta*0.005
MoveEntity f\entity,0,0,0.03*delta
EntityAlpha f\entity,f\alpha#
ScaleSprite f\entity,f\size,f\size
If f\alpha<=0
FreeEntity f\entity
Delete f
EndIf
Next
End Function
;_____________________________
;=MAIN LOOP
Graphics3D 800,600,32
Global camera=CreateCamera()
MoveEntity camera,0,0,-30
Global light=CreateLight()
Global sprite=LoadSprite("sprite.bmp"):HideEntity sprite
;__create 1
snar_ptr=create_snar()
s.snar=Object.snar(snar_ptr)
s_ent=s\entity%
PositionEntity s_ent,0,2,0
;__create 2
snar_ptr=create_snar()
s.snar=Object.snar(snar_ptr)
s_ent2=s\entity%
;__create 3
snar_ptr=create_snar()
s.snar=Object.snar(snar_ptr)
s_ent3=s\entity%
RotateEntity s_ent3,0,90,90
;;;==
time=MilliSecs()
While Not KeyHit(1)
new_time=MilliSecs()
delta=new_time-time
time=new_time
MoveEntity s_ent2,0,0.07*delta,0
TurnEntity s_ent2,0.07*delta,0,0
MoveEntity s_ent3,0,0.07*delta,0
TurnEntity s_ent3,0.07*delta,0,0
update_snr()
update_fire_sprite()
RenderWorld
Flip
Wend
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|