Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 04.09.2005, 22:47   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 04.09.2005, 22:48   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)


Вот это надо кинуть в папку с проектом


Ещё неплохо бы SeedRnd приписать
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 24.08.2006, 22:38   #3
vadim2
Знающий
 
Регистрация: 08.06.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 8 пользователей)
Re: ракета в полёте + пламя из сопла

Спасибо. Очень пригодилось.
(Offline)
 
Ответить с цитированием
Старый 24.08.2006, 23:53   #4
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: ракета в полёте + пламя из сопла

Type snar
	Field entity%
	Field fire_entity%
	Field time%
     Field smok
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\smok=s\smok+1
	If s\smok>Rand(2,5)
	    s\smok=0
	   create_smok_sprite(s\fire_entity)
	EndIf  
 	s\time=MilliSecs()
 EndIf
	Next
End Function
;__________________________________________________
Type fire_sprite
	Field entity%
	Field time%
	Field alpha#
	Field size#
	Field stat
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 create_smok_sprite(parent)
	f.fire_sprite=New fire_sprite
	f\stat=1
	f\entity=CopyEntity(sprite_smok)
	EntityColor f\entity,140,140,140
	RotateEntity f\entity,EntityPitch(parent,True),EntityYaw(parent,True),EntityRoll(parent,True)
	PositionEntity f\entity,EntityX(parent,True)+Rnd(-1,1),EntityY(parent,True)+Rnd(-1,1),EntityZ(parent,True)+Rnd(-1,1)

	MoveEntity f\entity,0,0,5
	f\alpha#=.5
	f\size#=Rnd(3,4)
	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

If f\stat=0
 f\alpha#=f\alpha#-delta*0.01
 f\size#=f\size#-delta*0.005
 MoveEntity f\entity,0,0,0.03*delta
Else
  f\alpha#=f\alpha*.97
 f\size#=f\size*1.02
EndIf 
 EntityAlpha f\entity,f\alpha#
 ScaleSprite f\entity,f\size,f\size
 If f\alpha<.1
 	FreeEntity f\entity
 	Delete f
 EndIf
	Next
End Function
;_____________________________
;=MAIN LOOP
Graphics3D 800,600,32
Global camera=CreateCamera()
CameraClsColor camera,0,100,155
MoveEntity camera,0,0,-30
Global light=CreateLight()
Global sprite=LoadSprite("sprite.bmp"):HideEntity sprite
Global sprite_smok=LoadSprite("sprite.bmp",3)

HideEntity sprite_smok
;__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
Побаловался 10 мин.
Теперь с дымом
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
YaLAS (09.11.2010)
Старый 18.11.2006, 17:52   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: ракета в полёте + пламя из сопла

Тут у меня спрашивают, что делать: при увеличении сокрости полёта снаряда - нарушается целостность огня, да и вообще - портится визуальное восприятие. Ответ универсальный и единственный - подбирайте коэффициенты: масштаб,изменение масштаба, скорость спрайта и изменения коэффициентов, кол-во спрайтов...
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пламя andriy_lysko 3D-программирование 1 20.08.2009 21:23
Пламя свечи WaReZ_MEN 3D-программирование 12 20.05.2007 22:06
Ракета в полёте + пламя из сопла Viper 3D-программирование 3 18.11.2006 21:32


Часовой пояс GMT +4, время: 17:03.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com