particles.c

Diese Include-Datei enthält oft verwendete kleine Partikel-Funktionen wie etwa das Emulieren eines Partikeleffektes mit Sprites. Die Funktionen sind einfach genug, um auf den ersten Blick verstanden zu werden. Wenn Sie sie verändern wollen, editieren Sie bitte eine Kopie von particles.c in Ihrem Work-Ordner und nicht die Originaldatei im include-Ordner.

effect_sprite(STRING* image, EVENT func, var number, VECTOR* pos, VECTOR* vel)

Emuliert einen effect_local ähnlichen Partikeleffekt, jedoch mit Sprites (oder Modellen) anstelle von Partikeln.

Parameter:

image STRING* oder char*; Sprite- oder Modell-Dateiname des Partikels, oder NULL für einen Default-Partikel.
func Partikelfunktion, läuft jeden Frame.
number Anzahl der zu erstellenden Partikel.
pos Position desPartikel-Emitters.
vel Anfangs-Geschwindigkeitsvektor.

Bemerkungen:

Beispiel:

#include <acknex.h>
#include <default.c>
#include <particles.c> // original particle function function p_fountain(PARTICLE* p) { VECTOR vTemp; vec_randomize(vTemp,2); vec_add(p.vel_x,vTemp); vec_set(p.blue,vector(random(255),random(255),255)); set(p, MOVE | BRIGHT | TRANSLUCENT); p.alpha = 100; p.size = 2; p.gravity = 0.2; p.skill_a = 3; // fade factor p.event = p_fade; } // sprite-emulated particle function function p_fountain_sprite(ENTITY* p) { VECTOR vTemp; vec_randomize(vTemp,2); vec_add(p._VEL_X,vTemp); vec_set(p.blue,vector(random(255),random(255),255)); set(p, _MOVE | BRIGHT | TRANSLUCENT); p.alpha = 100; p._SIZE = 2; p._GRAVITY = 0.2; p._FADE = 3; // fade factor p.event = p_fade_sprite; } function main() { max_entities = max_particles; level_load(NULL); vec_set(camera.x,vector(-150,0,50)); while(1) { if (key_s) // emulated particles effect_sprite(NULL,p_fountain_sprite,maxv(1,20*time_step),vector(0,0,0),vector(0,0,5)); else // original particles effect(p_fountain,maxv(1,20*time_step),vector(0,0,0),vector(0,0,5)); wait(1); } }
   

vec_randomize (VECTOR* vec, var range)

Setzt einen Vektor auf eine zufällige Länge und Ausrichtung; nützlich für Partikelexplosionen (s. Beispiel oben).

Parameter:

vec - Vektor, der auf Zufallswerte gesetzt werden soll.
range - maximum vector length.

Modifiziert:

vec
 

p_fade (PARTICLE* p);

p_fade_sprite (ENTITY* p);

Blendet einen durchscheinenden Partikel bzw. emulierten Partikel aus und entfernt ihn sobald er komplett durchsichtig ist. Die Blendgeschwindigkeit läßt sich über den skill_a-Parameter bzw. den Parameter _FADE des Partikels angeben (s. Beispiel oben).
 

p_follow (PARTICLE* p);

p_follow_sprite (ENTITY* p);

Läßt einen Partikel der erstellenden Entity folgen. Verwendet skill_x/_y/_z bzw. entity skill70..72.
 

p_snow (PARTICLE* p)

Läßt einen Partikel langsam zu Boden fallen, wie eine Schneeflocke. Windgeschwindigkeit und -Richtung werden mit vel_x/_y/_z vorgegeben. Der Partikel wird an eine Zufallsposition am oberen Ende des camera Viewkegels plaziert und automatisch entfernt, wenn er das untere Ende erreicht. skill_z wird benutzt.

Beispiel: Siehe samples\weather.c

Siehe auch:

effect

► latest version online