Partikelsystem
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
BlitzcoderNewsposterBetreff: Partikelsystem |
Fr, Jan 05, 2007 20:01 Antworten mit Zitat |
|
---|---|---|
So, und schon wieder gibt es ein Modul von mir. Ein BMax 2D Partikelsystem. Es ist nur für Windows kompiliert. Mac und Linux User müssen es eben noch kurz kompilieren. Bei dem Beispiel stehen oben die Wichtigsten Werte eingeblendet und lassen sich mit den dahinterstehenden Tasten verändern! Allerdings sind es nicht alle Funktionen. Nur die wichtigsten.
Download Modul und Beispiel(Auch als EXE für nicht BMax User) Befehlserkärung: TEmitter.create(x,y,"PfadZurGrafik") Erstellt einen neuen Emitter. Zurückgegeben wird ein TEmitter Handle. TEmitter.Update() Kommt in die Hauptschleife. Updatet alle Emitter. TEmitter.draw() Zeichnet alle Partikel. Auch in die Hauptschleife damit emitter.setemitrate(er:int) Legt die Zahl der neuen Partikel pro Sekunde fest emitter.setparticlelifetime(plt:int) Legt die Lebensdauer der Partikel in ms fest emitter.setrotation(rot:int) Legt die Richtung des Emitter fest. Angabe in Grad. emitter.setrotationvar(rv:int) Legt die Variation der Richtung fest. Angabe in Grad emitter.Setwindx(wx:float) Legt den Wind der X Achse fest. emitter.setwindy(wy:float) Legt den Wind der Y Achse fest. emitter.setwind(wx:float,wy:Float) Legt den Wind fest TEmitter.setglobalwind(wx:float,wy:float) Setzt globalen Wind emitter.setstartalpha(sa:float) Legt den Alpha Wert der Partikel bei ihrem Erstellen fest emitter.setendalpha(ea:Float) Legt den Alpha Wert der Partikel am Ende ihrer Lebensdauer fest emitter.setparticlespeed(ps:float) Legt die Geschwindigkeit der Partikel fest emitter.setparticlespeedvar(psv:float) Legt die Variation der Partikelgeschwindigkeit fest emitter.setparticlescalestart(psa:float) Legt die Anfangsgrösse der Partikel fest emitter.setparticlescaleend(pse:float) Legt die Endgrösse der Partikel fest. emitter.setparticlestartcolor(r:int,g:int,b:int) Legt die Anfangsfarbe der Partikel fest. So kann man die Partikel langsam die Farbe ändern lassen emitter.setparticleendcolor(r:int,g:int,b:int) Legt die Endfarbe der Partikel fest emitter.setx(x:int) Ändert die X Position des Emitters emitter.sety(y:int) Ändert die Y Position des Emitters emitter.setparticlerotation(rot:float) Partikel um ihre Eigene Achse drehen lassen emitter.setblend(blend) Blend Mode (LIGHTBLEND, ALPHABLEND etc.) für den Emitter festlegen emitter.enable() Schaltet den Emitter ein emitter.disable() Schaltet den Emitter aus Beispiel: Code: [AUSKLAPPEN] SuperStrict
Import Blitzcoder.particle Graphics 800,600,0 SetBlend(ALPHABLEND) Global emitter:TEmitter = TEmitter.create(400,300,"particle.png") Global fps_time:Int=MilliSecs() Global fps:Int Global fps_count:Int Global timer:Int=MilliSecs() Local r_start:Int = 255, r_end:Int = 255 Local g_start:Int = 255, g_end:Int = 0 Local b_start:Int , b_end:Int = 0 Local rot:Int=0 Local rot_var:Int=15 Local wx:Float=0 Local wy:Float=0 Local s_start:Float=0.1 Local s_end:Float=0.8 Local par_rot:Float=0 While Not KeyDown(KEY_ESCAPE) And Not AppTerminate() If (MilliSecs()-timer)>16 Then TEmitter.update() If KeyDown(KEY_Q) Then r_start:+1 If KeyDown(KEY_W) Then g_start:+1 If KeyDown(KEY_E) Then b_start:+1 If KeyDown(KEY_A) Then r_start:-1 If KeyDown(KEY_S) Then g_start:-1 If KeyDown(KEY_D) Then b_start:-1 If KeyDown(KEY_R) Then r_end:+1 If KeyDown(KEY_T) Then g_end:+1 If KeyDown(KEY_Z) Then b_end:+1 If KeyDown(KEY_F) Then r_end:-1 If KeyDown(KEY_G) Then g_end:-1 If KeyDown(KEY_H) Then b_end:-1 If KeyDown(KEY_Y) Then rot:-2 If KeyDown(KEY_X) Then rot:+2 If KeyDown(KEY_PAGEUP) Then rot_var:+1 If KeyDown(KEY_PAGEDOWN) Then rot_var:-1 If KeyDown(KEY_UP) Then wy:-0.1 If KeyDown(KEY_DOWN) Then wy:+0.1 If KeyDown(KEY_LEFT) Then wx:-0.1 If KeyDown(KEY_RIGHT) Then wx:+0.1 If KeyDown(KEY_I) Then s_start:+0.01 If KeyDown(KEY_K) Then s_start:-0.01 If KeyDown(KEY_O) Then s_end:+0.01 If KeyDown(KEY_L) Then s_end:-0.01 If KeyDown(KEY_C) Then par_rot:-0.1 If KeyDown(KEY_V) Then par_rot:+0.1 If KeyDown(KEY_M) Then r_start=0 g_start=0 b_start=0 r_end=255 g_end=255 b_end=255 rot=-90 rot_var=15 wx=1.3 wy=-0.2 s_start=0.1 s_end=1.1 par_rot=0.2 EndIf emitter.setparticlestartcolor(r_start,g_start,b_start) emitter.setparticleendcolor(r_end,g_end,b_end) emitter.setparticlescalestart(s_start) emitter.setparticlescaleend(s_end) emitter.setwindx(wx) emitter.setwindy(wy) emitter.setrotationvar(rot_var) emitter.setrotation(rot) emitter.setparticlerotation(par_rot) emitter.setx(MouseX()) emitter.sety(MouseY()) timer=MilliSecs() EndIf SetScale 1,1 SetAlpha 1 SetRotation 0 SetColor 255,255,255 DrawText "BMAX PARTICLE SYSTEM | COPYRIGHT(c) 2007 by Johannes Wotzka",0,0 DrawText "START COLOR: "+r_start+"|"+g_start+"|"+b_start+" PRESS Q/A W/S E/D",0,15 DrawText "END COLOR: "+r_end+"|"+g_end+"|"+b_end+" PRESS R/F T/G Z/H",0,30 DrawText "ROTATION: "+rot+" PRESS X/Y",0,45 DrawText "ROTATION VARIATION: "+rot_var+" PRESS PAGE UP/DOWN",0,60 DrawText "WINDX: "+wx+" WINDY: "+wy+" PRESS UP/DOWN/LEFT/RIGHT",0,75 DrawText "START SCALE: "+s_start+" END SCALE: "+s_end+" PRESS I/K O/L",0,90 DrawText "PARTICLE ROTATION: "+par_rot+" PRESS C/V",0,105 DrawText "FOR SIMPLE SMOKE PRESS M",0,130 DrawText "FPS: "+getfps(),700,0 TEmitter.draw() Flip 0; Cls Wend Function getfps:Int() fps_count:+1 If (MilliSecs()-fps_time)>500 Then fps=fps_count*2 fps_time=MilliSecs() fps_count=0 EndIf Return fps End Function Screenshot: Ich habe vor, das ganze noch zu erweitern. Also wäre es gut, wenn ihr mir sagen würdet, was ich ergänzen/verändern soll. MfG Blitzcoder |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
- Zuletzt bearbeitet von Blitzcoder am Mo, Mai 11, 2009 22:12, insgesamt 9-mal bearbeitet
Eingeproggt |
Fr, Jan 05, 2007 20:52 Antworten mit Zitat |
|
---|---|---|
Ist nicht schlecht geworden, nur find ichs komisch, dass man negative Farben verwenden kann | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
BlitzcoderNewsposter |
Fr, Jan 05, 2007 21:23 Antworten mit Zitat |
|
---|---|---|
Die bringen ja nichts. Ich hab nur in dem Beispiel keinen Begrenzer eingebaut. | ||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
BlitzcoderNewsposter |
Fr, Jan 05, 2007 22:04 Antworten mit Zitat |
|
---|---|---|
[Update V1.01]
* Partikel Rotation hinzugefügt. Partikel können sich jetzt um ihre eigene Achse drehen. SetParticleRotation. Download siehe oben. |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
BlitzcoderNewsposter |
So, Jan 07, 2007 20:06 Antworten mit Zitat |
|
---|---|---|
[UPDATE V 1.02]
Methode Setblend(blend) Hinzugefügt. Man kann jetzt für jeden Emitter einzeln den Blend Mode festlegen. Einfach die Standard BMAX Modes SHADEBLEND, LIGHTBLEND etc. nehmen. Methoden enable() und disable() schalten den Emitter an/aus. Download siehe oben. |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
BlitzcoderNewsposter |
Di, Feb 27, 2007 22:04 Antworten mit Zitat |
|
---|---|---|
[UPDATE V 1.03]
Neu ist die Funktion TEmitter.SetGlobalWind(x,y) um für alle Emitter Wind zu setzen. Auch neu ist die emitter.SetWind(x,y), nicht mehr 2 Funktionen. Download siehe oben. |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group