forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Нужен огонь. (http://forum.boolean.name/showthread.php?t=1533)

ЛысыЙ_Чук-Иванчук 20.09.2006 21:11

Нужен огонь.
 
Есть ли пример по созданию огня( исходник ). А то я сделал а он от перепада ФПС вытворяет такое:( :) :( :) :dontknow: ;)

jimon 20.09.2006 22:18

Re: Нужен огонь.
 
синхронизируй с фпс

ЛысыЙ_Чук-Иванчук 21.09.2006 09:37

Re: Нужен огонь.
 
Цитата:

синхронизируй с фпс
Вот это у меня плохо получается. Пробую через del_t но при подении фпс огонь стоновится слишком большим. А есть ли еще кокойнибуть способ синхронизации( допустим 10 раз в секунду )

pax 21.09.2006 17:37

Re: Нужен огонь.
 
Используй технологию твининга, в примерах блитца есть пример Mak->Castle, там как раз то что тебе нужно ;)
или можешь просто:
Код:

timer = Millisecs()
While Not KeyDown(1)
        if  Millisecs() - timer >=100 then
            UpdateParticles()
            timer = Millisecs()
        end if
Wend


vadim2 23.09.2006 20:22

Re: Нужен огонь.
 
В исходниках Blitz et сetera посмотри.

ЛысыЙ_Чук-Иванчук 25.09.2006 08:18

Re: Нужен огонь.
 
Вот столкнулся с проблемой, одним из параметров является количество спрайтов, не получается ограничить число спрайтов.
Как можно это сделать.
Цитата:

В исходниках Blitz et сetera посмотри.
Если ты про пример где ставиш красные треугольники и из них идет огонь. Этот пример мне неподходит.

jimon 25.09.2006 08:41

Re: Нужен огонь.
 
как именно не получается ?

ЛысыЙ_Чук-Иванчук 25.09.2006 10:49

Re: Нужен огонь.
 
Я хочу регулировать количество спрайтов с помощью их прозрачности, когда прозрачность достигает значения <.1. Тогда удаляется. Мне надо регулировать ту скорость, с которой спрайты делаются прозрачными
c\alpha=c\alpha-c\max*.01
примерно так. Но сразу появляется один глюк, ведь чем больше значение c\max тем быстрей они становятся прозрачней. Тем самым быстрей удаляются.

pax 25.09.2006 17:24

Re: Нужен огонь.
 
Допустим переменная c\Speed# изменяется в пределах 1.0...100.0 (пусть это будут проценты), тогда скорость исчезновения будет рассчитываться по формуле:
Код:

c\alpha#=c\alpha#-c\Speed#*0.01
т.е. если c\Speed#=100.0 то скорость скрытия почти мгновенная, если c\Speed#=1.0, то самая медленная.
А условием уделения будет c\alpha#<0.0.
Примерно так...

ЛысыЙ_Чук-Иванчук 30.09.2006 22:23

Re: Нужен огонь.
 
Такая проблема. Когда далеко отходишь от огня, он становится кубиками, я после загрузки спрайта поставил 2, теперь нормально, но он стал какой-то смуглый (не яркий).

Timon 01.10.2006 00:03

Re: Нужен огонь.
 
юзай EntityFX sprite,8 - т.е на туман не реагирует(скорее всего это из-за тумана)

ЛысыЙ_Чук-Иванчук 01.10.2006 09:10

Re: Нужен огонь.
 
Не помогает, все равно такой. Ну ладно пусть и будет такой.

Diplomat 01.10.2006 13:06

Re: Нужен огонь.
 
Млин, ну не RTFM?
Поставь ему флаг при загрузке "1", а ФХ - "1+8". Почему- читай Хелп!

jimon 01.10.2006 14:07

Re: Нужен огонь.
 
Diplomat
когда про Бога будут спрашивать, ты тоже будеш тыкать в библию с криками RTFM ? :lol:

Diplomat 01.10.2006 14:46

Re: Нужен огонь.
 

Да, буду. Ибо сказано: сначала учи Хелп от сих (корка№1) и до сих (корка№2), а потом ужо иди на Форум задавать вопросы. А так- 90% вопросов Vlad-а от незнания элементарных основ.
И скажи еще, что я ему за криками "RTFM!" не ответил, или ответил неправильно? :-)

jimon 01.10.2006 16:31

Re: Нужен огонь.
 

я вообще за RTFM :)

ЛысыЙ_Чук-Иванчук 01.10.2006 20:45

Re: Нужен огонь.
 
Спасибо большое, все почти хорошо, но он не затуманивается.

HolyDel 03.10.2006 01:35

Re: Нужен огонь.
 
FX="1+8". Уберешь восьмерку будут "затуманиваться", НО появятся кубики так, что что предпочтительнее решай сам.

А вообще я тоже за RTFM.:)

Timon 03.10.2006 10:47

Re: Нужен огонь.
 
чё такое ртфм?

НУБ 03.10.2006 10:51

Re: Нужен огонь.
 
-Read This Fuking Manual ;)

ЗЫ
А зачем его затуманивать, можно просто яркость понижать с расстоянием(а когда исчезнет - хайдить и не обрабатывать)

ЛысыЙ_Чук-Иванчук 03.10.2006 20:52

Re: Нужен огонь.
 
Цитата:

А вообще я тоже за RTFM.
Я читаю эту гребаную литературу. Но много не понимаю т.к. почти вся она на английском, а переводчик так переводит, что легче повещаться.
Мне очень стыдно спрашивать, но как затемнять объект.

НУБ 04.10.2006 05:13

Re: Нужен огонь.
 
- EntityColor

GoodWin 01.11.2006 14:46

Re: Нужен огонь.
 
Вложений: 2
Я вот огонек наваял... оцените, но строго не судите...
Цитата:

;================================================= =================
;Author: GoodWin
;Email: [email protected]
;Date: 01.11.2006
;Notes: Ñïàñèáî bradford6 çà èäåþ
;================================================= =================
Include "fps.bb"
Graphics3D 640,480,16,2
Const UPS=60
Const MAXPARTICLE%=40
Type Particle
Field entity
Field speed#
Field life#
Field scalex#
Field scaley#
Field rotate#
Field alpha#
End Type
Type Emiter
Field entity
Field count%=0
Field p.particle[MAXPARTICLE%]
End Type

camera=CreateCamera()
PositionEntity camera,0,0,-5
light=CreateLight()
Global sphere=CreateSphere():ScaleEntity sphere,.2,.2,.2
PositionEntity sphere,0,-2,0
EntityColor sphere,200,200,100
Global fire=LoadSprite ("fire.jpg",9):HideEntity fire
s=CreatePivot (sphere)
PositionEntity s,-10,0,0
CreateEmiter(sphere)
CreateEmiter(s)
period=1000/UPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)

For k=1 To ticks
time=time+period
If KeyHit(1) End
TurnEntity sphere,0,1,0
UpdateParticle()
UpdateWorld
Next

RenderWorld tween
Render2D()
Flip
Forever
;-=Functions=-
Function UpdateParticle()
For e.Emiter=Each Emiter
If e\count<MAXPARTICLE Then
e\count=e\count+1
e\p.particle[e\count]=New Particle
e\p.particle[e\count]\entity=CopyEntity(fire)
PositionEntity e\p.particle[e\count]\entity,EntityX#(e\entity,1)+Rnd(-.2,.2),EntityY#(e\entity,1),EntityZ#(e\entity,1)+R nd(-.2,.2)
e\p.particle[e\count]\scalex#=Rnd(.6,.7):e\p.particle[e\count]\scaley#=Rnd(.6,.7)
e\p.particle[e\count]\rotate#=Rnd(-1,1)
e\p.particle[e\count]\life=Rand(20,40)
e\p.particle[e\count]\speed#=Rnd(.08,.1)
e\p.particle[e\count]\alpha#=Rnd(.3,.9):;DebugLog "count "+e\count+" Alpha "+e\p.particle[e\count]\alpha
EntityAlpha e\p.particle[e\count]\entity,e\p.particle[e\count]\alpha#
ShowEntity e\p.particle[e\count]\entity
EndIf
For n = 1 To e\count
If e\p.particle[n]\life > 0
e\p.particle[n]\scalex#=e\p.particle[n]\scalex#*.94
e\p.particle[n]\scaley#=e\p.particle[n]\scaley#*.94
e\p.particle[n]\rotate=e\p.particle[n]\rotate*Rnd(1.2,1.8)
e\p.particle[n]\alpha#=e\p.particle[n]\alpha#*.7
e\p.particle[n]\life = e\p.particle[n]\life -1
EntityAlpha e\p.particle[n]\entity,e\p.particle[n]\alpha#
RotateSprite e\p.particle[n]\entity,e\p.particle[n]\rotate
ScaleSprite e\p.particle[n]\entity,e\p.particle[n]\scalex#,e\p.particle[n]\scaley#
MoveEntity e\p.particle[n]\entity,0,e\p.particle[n]\speed#,0:
Else
HideEntity e\p.particle[n]\entity
PositionEntity e\p.particle[n]\entity,EntityX#(e\entity,1)+Rnd(-.25,.25),EntityY#(e\entity,1),EntityZ#(e\entity,1) +Rnd(-.25,.25)
e\p.particle[n]\scalex#=Rnd(.6,.7):e\p.particle[n]\scaley#=Rnd(.6,.7)
e\p.particle[n]\rotate#=Rnd(-1,1)
e\p.particle[n]\alpha#=Rnd(.5,.8)
e\p.particle[n]\life=Rand(10,40)
EntityAlpha e\p.particle[n]\entity,e\p.particle[n]\alpha#
ShowEntity e\p.particle[n]\entity
EndIf
Next
Next
End Function
Function CreateEmiter(entity)
e.Emiter= New Emiter
e\entity=CreatePivot (entity)
e\count=0
End Function
Function Render2D()
Text 10,10,fps()
End Function



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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot