[B3D] kleine Feuer Engiene

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Doni

Betreff: [B3D] kleine Feuer Engiene

BeitragDo, Sep 22, 2005 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab mal ne kleine Feuerengiene gemacht:

Code: [AUSKLAPPEN]

;Engiene Für Feuer

SeedRnd(MilliSecs())
Graphics3D 1024,768,16,1


cam = CreateCamera()



Type fire_quelle
   Field x,y
   Field timer,menge
End Type

Type fire
   Field alpha#,timer
   Field image,gesch
   Field r,g
End Type


Global q.fire_quelle,f.fire,wind_timer,flamme
flamme = CreateSprite()
ScaleSprite flamme,5,5


For I = 1 To 5
q.fire_quelle = New fire_quelle
q.fire_quelle = Last fire_quelle
q.fire_quelle\x = 200+i*14
q.fire_quelle\y = 500
q.fire_quelle\timer = Rnd(2000,10000)
q.fire_quelle\menge = 10

Next
wind_gesch = 3

frame = CreateTimer(100)
Repeat
SetBuffer BackBuffer()




create_fire()
move_fire(wind_gesch)
verbrauch_fire()
;wind_gesch = chance_wind(wind_gesch,wind_timer)


i = 0
For f.fire = Each fire
   i = i+1
Next

;UpdateWorld()
RenderWorld()

Text 10,10,i

Flip
Cls
Until KeyHit(1)
End


Function create_fire()
   For q.fire_quelle = Each fire_quelle
      For I = 1 To q.fire_quelle\menge
         f.fire = New fire
         f.fire = Last fire
         f.fire\gesch = 10
         f.fire\image = CopyEntity(flamme)
         f.fire\r = 255
         f.fire\g = 255
         f.fire\alpha = 1
         ;ScaleSprite f.fire\image,3,3
         EntityColor f.fire\image,255,255,0
         ;EntityAlpha f.fire\image,0.3
        PositionEntity f.fire\image,((q.fire_quelle\x+Rnd(-5,+5))*2)-1024+2,-((q.fire_quelle\y+Rnd(-5,5))*2)+768-2,768
   Next
   Next
End Function 


Function move_fire(wind_gesch)
   For f.fire = Each fire
      MoveEntity f.fire\image,wind_gesch,f.fire\gesch,0
      RotateSprite f.fire\image,2
   Next
End Function




Function verbrauch_fire()
   For f.fire = Each fire
      If f.fire\timer < MilliSecs() Then
         f.fire\timer = MilliSecs()+Rnd(30,80)
         f.fire\alpha# = f.fire\alpha-0.1
         If f.fire\r >  50 Then f.fire\r = f.fire\r - 20
         f.fire\g = f.fire\g - 40
         EntityColor f.fire\image,f.fire\r,f.fire\g,0
         EntityAlpha f.fire\image,f.fire\alpha#
      EndIf    
      If f.fire\alpha# < 0.1 Then FreeEntity f.fire\image:Delete f.fire
   Next
End Function


Function chance_wind(gesch,timer)
   If wind_timer < MilliSecs() Then
      gesch = Rnd(10)
      wind_timer = MilliSecs()+Rnd(70,300)-gesch*3
   EndIf
   
   Return gesch
   
   
End Function








wind_gesch = wind geschwindigkeit Very Happy


Noch eine Frage:
Wie geht es das ich nicht immer die Sprites neu laden muss?
Bin neu in BB3D

Lob und Kritik erwünscht!

Doni

EDIT: habs mal nen bischen überarbeitet!
  • Zuletzt bearbeitet von Doni am Do, Sep 22, 2005 20:18, insgesamt 2-mal bearbeitet
 

#Reaper

Newsposter

BeitragDo, Sep 22, 2005 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Da meinst du bestimmt CopyEntity() Smile

Also, ist in ordnung, aber es sieht nochnicht aus wie ein richtiges feuer Wink


MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group