Partikel-Effekte programmieren ed
Der Variablen-Typ für ein einziges Partikel ist particle bzw. beam.
Erschaffen werden kann es mit CreateParticle, gelöscht mit XDelete
Um das Verhalten festzulegen, kann eine Callback-Funktion mitgegeben werden, die in jedem Frame ausgeführt wird, ein Pointer auf das Partikel wird dieser Funktion von der Engine als einziger Parameter mitgegeben.
Die Position (...->Pos) wird automatisch durch den aktuellen Wert der Geschwindigkeit (...->Vel) korregiert. Auch ...->TimeToLive zählt automatisch nach unten und sobald es negativ wird, wird das Partikel gelöscht.
Beispiel:
// Callback-Funktion
void EffectFunc( particle p )
{
// langsam transparenter werden lassen
p->Color.a -= elapsed / 4.0f;
// loeschen, wenn es nicht mehr sichtbar ist
if ( p->Color.a < 0 )
p->TimeToLive = -1;
}
void Effect()
{
vector pos = vector( 100, 100, 100 );
int tex = LoadTexture( "aaa.tga" );
int i = 0;
// einmalig 10 Partikel in einer Reihe erstellen
while( i < 10 ){
// erstellen
particle ptc = CreateParticle( pos, tex,
&EffectFunc,
5, // lebt 5 sec
10); // 10 le Radius
// Start-Werte festlegen
ptc->Color = Green; // gruen faerben
ptc->Vel = vector( 0, 100, 0 ); // mit 100 le/s nach oben fliegen lassen
pos.x += 10;
i ++;
}
}Weiterführend: Ein einfaches Partikel hängt in der Welt und hat immer die selbe Ausrichtung zur Kamera. Will man diese kontrollieren, muss es mit der Funktion CreateParticleRot erzeugt werden. Dadurch wird die Eigenschaft ...->Ang verwendbar. Ein beam schließlich ist ein langgezogenes Partikel und wird mit CreateBeam erschaffen. Es hat die zusätzliche Eigenschaft ...->Length als Vektor die Länge und Richtung des Strahles angibt.