(http://www.styleattax.de/game/images/particles.png)
Download:
http://www.styleattax.de/game/?download=Particles.rar
Naja ich find...... naja ;)
ein Befehl RND(-50,50) wär nett für sowas
Und das Dings, GLBasic ist auch noch verdammt schnell.
60fps bei über 20.000 Partikel. Hola
Japp sau schnell, hab ich Gernot auch schon gesagt !
Ist mit Types VIEL schneller als Blitz Basic!!!!
FUNCTION RND2: mini, maxi
RETURN RND(maxi+mini) - mini
ENDFUNCTION
Dank dir gernot !
EDIT:
Geht so nicht!
Ich will das es Negativ wie auch Positiv sein kann vom wert her.
z.B so : RND( -50, 50 )
Ist in Blitz auch so!
Ach. Mein Fehler:
RND(maxi - mini) + mini
Geht wohl auch nicht, ich glaube RND kann keinen Negativen Wert besitzen!
Geht doch!?
FOR i=0 TO 100
PRINT R2(-50, 50), 0, i*16
NEXT
SHOWSCREEN
MOUSEWAIT
FUNCTION R2: mini, maxi
RETURN RND(maxi-mini)+mini
ENDFUNCTION
ich bin ja auch ein depp o.O
Habs nur verdreht, deshalb ...
Kannst du das Beispiel nochmal hoch laden?
Lass doch mal die Leichen im Keller :D
Habs nimmer...
Schade drum! Gibt's sowas noch irgendwo in 3D oder soll ich veruschen sowas selbst zu machen?
Na selbst machen und direkt nen Tutorial zu schreiben :good:
hehehe
Wenn es so einfach wäre, dann wäre ich nicht hier im Forum und würde wie wild danach suchen! :noggin:
Ach das kriegst du schon hin :)
brauchst doch nur ein Type und ein bisschen Code =D
Ach, ich mache das Ganze jetzt mal so:
Ich warte mal ab, bis ich mit meinem Nachhilfe - Lehrer zu den Vektoren gekommen bin und versuche dann mal was Eigenes zu machen.
Falls es funktioniert, dann is' gut, falls nicht, is' auch gut! :nana:
Hoffentlich wird das was... :D
Und ich versuch gerad ne 2D-PE zu bauen... Wenns geklappt hat, geb ichs dir ;) also den Sourcecode xD
Cooool!
Ich bin gespannt...
Hmmm...
Also bis jetzt sieht der Source so aus^^
TYPE Vec2
x;y;
ENDTYPE
TYPE Color
r;g;b;
ENDTYPE
TYPE Particle
sprite%
position AS Vec2
direction AS Vec2
rotation
rotation_speed
color AS Color
scale
timeToLive
FUNCTION init: sprite%, pos_x, pos_y, dir_x, dir_y, angle, rotation_speed, col_r%=255, col_g%=255, col_b%=255, scale=1, ttl=5
self.sprite=sprite
self.position.x=pos_x; self.position.y=pos_y
self.direction.x=dir_x; self.direction.y=dir_y
self.rotation=angle
self.rotation_speed=rotation_speed
self.color.r=col_r
self.color.g=col_g
self.color.b=col_b
self.scale=scale
self.timeToLive=ttl
ENDFUNCTION
FUNCTION update:
INLINE
self.timeToLive--;
ENDINLINE
INC self.position.x, self.direction.x; INC self.position.y, self.direction.y
INC self.rotation, self.rotation_speed
ENDFUNCTION
FUNCTION draw:
ROTOZOOMSPRITE self.sprite, self.position.x, self.position.y, self.rotation, self.scale
ENDFUNCTION
ENDTYPE
TYPE ParticleEngine
origin AS Vec2
particle AS Particle
particles[] AS Particle
textures[]
FUNCTION particleCount%:
RETURN LEN(self.particles[])
ENDFUNCTION
FUNCTION update:
FOR i=0 TO LEN(self.particles[])-1
self.particles[i].update()
IF(self.particles[i].timeToLive <= 0)
DIMDEL self.particles[], i
DEC i, 1
ENDIF
NEXT
ENDFUNCTION
FUNCTION add:
LOCAL p AS Particle
p.init(RND(LEN(self.textures[])), mrnd(-100, 100), mrnd(-100, 100), RND(360), RND(360), RND(360), RND(10)*0.1, 255, 255, 255, RND(20)*0.1, mrnd(30,60))
ENDFUNCTION
FUNCTION draw:
FOR i=0 TO LEN(self.particles[])-1
PRINT "blub",self.particles[i].position.x,self.particles[i].position.y
NEXT
ENDFUNCTION
ENDTYPE
FUNCTION mrnd: mini, maxi
LOCAL rand
rand=RND(maxi - mini) + mini
RETURN rand
ENDFUNCTION
Aber ich krieg beim Aufruf der PE-Functions (update, draw) nen "Type is not declared"... (ist in einer Extra .gbas-Datei)
Weiß jemand woran das liegen kann?
Also in einer extra *.gbas funktioniert es noch nicht.
Wenn du das Ganze aber in der Hauptdatei drin hast, dann geht es problemlos!
Versuch's so mal!
Quote from: backslider
Aber ich krieg beim Aufruf der PE-Functions (update, draw) nen "Type is not declared"... (ist in einer Extra .gbas-Datei)
Weiß jemand woran das liegen kann?
Ja, das ist glaube ich einer der Bugs die ich erwähnte.
Cheers
Hm, also bei mir kommt dann die Fehlermeldung:
Quote"ParticleSystem.gbas"(92) error : command not inside function or sub
So WPShadow...
Ich habs jetzt zumindest schonmal hinbekommen ne einfache 2D-ParticleEngine zu bauen :)
Hier der Source...
[attachment deleted by admin]
hehehe
Das sieht klasse aus!!!
Ich muß mir mal den Code durch sehen, wer weiß, was ich daraus bauen kann, falls ich den Code verstehe...
Also ganz grob erklärt hast du einfach einen Partikel mit seinen Eigenschaften (TYPE PARTICLE), wie z.B. Position, Lebensdauer UND eine "Partikelengine", welche den Partikel beliebig oft erstellt und sagt, was mit diesem passieren soll... Ich denke, das kann man auch noch einfacher schreiben, aber das war halt mal so auf die schnelle^^
Wenn ich mal Zeit habe, dann bau ich dir das auch nochmal in 3D, dann kannst du ja gucken, wo Unterschiede liegen ;)
Aber dank GLBasic wird der Partikel wohl einfach eine Position mehr bekommen (statt Vector2 (x,y) nen Vector3 (x,y,z))
und ein paar Wörter mehr im update der Partikelengine...
Kannst ja auch selbst mal probieren und erzählen, was du hinbekommen hast :)
Gruß
Und die Zeichenroutine muss geändert werden ;)
Du meinst die Draw (2D) muß in Draw (3D) geändert werden? --> Soweit wäre es mir klar gewesen... :booze:
Jo, das wird Schranz0r wohl meinen :good:
Das habe ich schon als selbstverständlich gesehen^^