Code:
#define TRAIL_VERTEX_1 skill6 // An diesem Vertex werden die "Abreisspartikel" eines Tragflächenendes erstellt
#define TRAIL_VERTEX_2 skill7 // An diesem Vertex werden die "Abreisspartikel" eines Tragflächenendes erstellt


Code:
// Partikelfunktionen
function fade_particles(PARTICLE *p)
{
	p.alpha -= 5 * time_step;
	if (p.alpha < 0) {p.lifespan = 0;}
}
function particle_trail(PARTICLE *p)
{
	var ptemp;
	p->vel_x = 0;
	p->vel_y = 0;
	p->vel_z = 0;
	p.alpha = 70;
	p.bmap = ptrail_tga;
	p.size = 10;
	p.flags |= (BRIGHT | MOVE | BEAM);
	p.lifespan = 30;
	p.event = fade_particles;
}
function PlTrailParticlesFade(PARTICLE* p) // "Abreisspartikel" am Tragflächenende ausfaden
{
	p.alpha-= time_step; // partikel ausfaden
	p.size-= time_step; // partikel verkleinern
	if(p.alpha <= 0 || p.size <= 0){p.lifespan = 0;} // partikel entfernen
}

function PlTrailParticles(PARTICLE* p) // "Abreisspartikel" am Tragflächenende
{
	p.bmap = bmpWingTrailParticle;
	p.size = random(0.5)+0.5; // zufällige größe
	p.alpha = random(10)+10; // zufällige transparenz
	p.vel_x+= (random(-1)+0.5)*time_step; // zufäliges zerstreuen
	p.vel_y+= (random(-1)+0.5)*time_step;
	p.vel_z+= (random(-1)+0.5)*time_step;
	p.flags |= (STREAK | TRANSLUCENT); // particel als durchsichtigen trail rendern
	p.event = PlTrailParticlesFade; // partikel ausfaden
}



function vec_randomize (var* vec, var range) // Partikel Beschleunigungsvektor auf zufällige Richtung und Länge setzen
{
   vec[0] = random(1) - 0.5; //  Richtung setzen / -0.5....0.5
   vec[1] = random(1) - 0.5; 
   vec[2] = random(1) - 0.5;
   vec_normalize(vec,random(range)); // Länge setzen
}

function part_alphafade(PARTICLE *p) // Partikel ausblenden
{
   p.alpha-= 2*time_step; // alphawert verringern
   p.size+= 2*time_step;
   if (p.alpha <= 0){p.lifespan = 0;} // partikel entfernen wenn alpha kleiner oder gleich null
}



In der Steuerung irgendow:
Code:
vec_for_vertex(vLastPos1, my, my.TRAIL_VERTEX_1); // aktuelle Vertexposition am ersten Tragflächenende auslesen
			vec_for_vertex(vLastPos2, my, my.TRAIL_VERTEX_2); // aktuelle Vertexposition am zweiten Tragflächenende auslesen



Code:
vec_for_vertex(vVertexPos1, my, my.TRAIL_VERTEX_1); // Aktuelle Vertexposition am ersten Tragflächenende auslesen
			vec_sub(vLastPos1,vVertexPos1); // Differenz zwischen alter und neuer position berechnen
			vec_scale(vLastPos1, 3); // Erhaltenen richtungsvektor skalieren
			effect(PlTrailParticles, 1, vVertexPos1, vLastPos1); // Partikel am Tragflächenende erschaffen und mit richtungsvektor beschleunigen
			
			vec_for_vertex(vVertexPos2, my, my.TRAIL_VERTEX_2); // Wie oben, nur am anderen Tragflächenende
			vec_sub(vLastPos2,vVertexPos2);
			vec_scale(vLastPos2, 3);
			effect(PlTrailParticles, 1, vVertexPos2, vLastPos2);
			wait(1);



Das sollte dir auf jedefall helfen.

Frag mich doch einfach

Last edited by Landixus; 05/19/10 04:45.

My Blog German: http://blog.quakeit.de/
www.quakeit.de ||
Airfix Game in Cooperation with:
www.3drt.com
Models Levels and Textures