[aide] petit aide pour un script de particule

Répondre
Partager Rechercher
bonjour ou bonsoir a tous voila depuis deux trois jours je suis en train de me prendre la tête a trouver comment faire pour que mon script de particule fire qui est sur trois prims lier peuvent s'enclencher simultanement ou si il existe une manière pour éviter de mettre a chaque fois le meme script dans chaque prims car en faite je veut cree un "tunnel" de flame et comme je n'arrive pas a le faire en une fois assez long j'ai donc lier 3 prims que j'ai mie l'un sur l'autre pour arriver a la hauteur voulue .

je vous donne mon script si quelqu'un peut m'aider je vous remercie enormement

Code PHP:

MakeParticles()                //This is the function that actually starts the particle system.

        
llParticleSystem([
            
PSYS_PART_FLAGS,( 
                
|PSYS_PART_INTERP_COLOR_MASK
                
|PSYS_PART_INTERP_SCALE_MASK
                
|PSYS_PART_FOLLOW_VELOCITY_MASK
                
|PSYS_PART_EMISSIVE_MASK ), 
            
PSYS_SRC_PATTERNPSYS_SRC_PATTERN_ANGLE_CONE ,
            
PSYS_PART_START_ALPHA,1,
            
PSYS_PART_END_ALPHA,1,
            
PSYS_PART_START_COLOR,<1,1,1> ,
            
PSYS_PART_END_COLOR,<1,1,1> ,
            
PSYS_PART_START_SCALE,<0.6875,0.78125,5>,
            
PSYS_PART_END_SCALE,<0.6875,1.875,5>,
            
PSYS_PART_MAX_AGE,10,
            
PSYS_SRC_MAX_AGE,0,
            
PSYS_SRC_ACCEL,<0,0.0078125,0.0546875>,
            
PSYS_SRC_BURST_PART_COUNT,100,
            
PSYS_SRC_BURST_RADIUS,5.80859,
            
PSYS_SRC_BURST_RATE,10000,
            
PSYS_SRC_BURST_SPEED_MIN,0,
            
PSYS_SRC_BURST_SPEED_MAX,0.1,
            
PSYS_SRC_ANGLE_BEGIN,PI_BY_TWO,
            
PSYS_SRC_ANGLE_END,PI_BY_TWO,
            
PSYS_SRC_OMEGA,<0,0,0>,
            
PSYS_SRC_TEXTURE, (key)"a96ecd50-96e1-28b4-51ec-96b3112210c0",
            
PSYS_SRC_TARGET_KEY, (key)"00000000-0000-0000-0000-000000000000"
         
]);
    }
default
{    
    
state_entry()
    {
        
MakeParticles();                //Start making particles
    
}
    
touch_startinteger num )            //Turn particles off when touched
    
{
        
state off;        //Switch to the off state
    
}
}
state off
{
    
state_entry()
    {
        
llParticleSystem([]);        //Stop making particles
    
}
 
    
touch_startinteger num )        //Turn particles back on when touched
    
{
        
state default;
    }

Tu n'échapperas pas de mettre le script générateur de particule dans chaque prim. Par contre, le premier peut déclencher les autres:

EDIT : non y a pas besoin grace à RedPurple

Code:
integer FIRE = 1;
integer STOP = 2;

MakeParticles()                //This is the function that actually starts the particle system.
{ 
        llLinkParticleSystem( LINK_SET, [
            PSYS_PART_FLAGS,( 0 
                |PSYS_PART_INTERP_COLOR_MASK
                |PSYS_PART_INTERP_SCALE_MASK
                |PSYS_PART_FOLLOW_VELOCITY_MASK
                |PSYS_PART_EMISSIVE_MASK ), 
            PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE ,
            PSYS_PART_START_ALPHA,1,
            PSYS_PART_END_ALPHA,1,
            PSYS_PART_START_COLOR,<1,1,1> ,
            PSYS_PART_END_COLOR,<1,1,1> ,
            PSYS_PART_START_SCALE,<0.6875,0.78125,5>,
            PSYS_PART_END_SCALE,<0.6875,1.875,5>,
            PSYS_PART_MAX_AGE,10,
            PSYS_SRC_MAX_AGE,0,
            PSYS_SRC_ACCEL,<0,0.0078125,0.0546875>,
            PSYS_SRC_BURST_PART_COUNT,100,
            PSYS_SRC_BURST_RADIUS,5.80859,
            PSYS_SRC_BURST_RATE,10000,
            PSYS_SRC_BURST_SPEED_MIN,0,
            PSYS_SRC_BURST_SPEED_MAX,0.1,
            PSYS_SRC_ANGLE_BEGIN,PI_BY_TWO,
            PSYS_SRC_ANGLE_END,PI_BY_TWO,
            PSYS_SRC_OMEGA,<0,0,0>,
            PSYS_SRC_TEXTURE, (key)"a96ecd50-96e1-28b4-51ec-96b3112210c0",
            PSYS_SRC_TARGET_KEY, (key)"00000000-0000-0000-0000-000000000000"
         ]);
    }
default
{    
    state_entry()
    {
        MakeParticles();                //Start making particles
        llMessageLinked(LINK_THIS, FIRE, "", "");
    }
    touch_start( integer num )            //Turn particles off when touched
    {
        state off;        //Switch to the off state
    }
}
state off
{
    state_entry()
    {
        llLinkParticleSystem(LINK_SET, []);        //Stop making particles
        llMessageLinked(LINK_THIS, STOP, "", "");
    }
 
    touch_start( integer num )        //Turn particles back on when touched
    {
        state default;
    }
}  


2éme et 3 éme script: Edit pas besoin


Dernière modification par Elenia B. ; 03/12/2011 à 08h01.
Citation :
Publié par redpurple
Remplace llParticleSystem([ par llLinkParticleSystem(LINK_SET,[
A ben oui . Je savais pas que ça existait ça. C'est vrai pas besoin d'un script dans chaque prim. Et puis je me suis gourée. Fatiguée moi le soir. Je corrige
A part cela , pour la "longueur" , il faut jouer avec différents paramètres.
Par exemple , tu pourrais augmenter légèrement PSYS_SRC_ACCEL .
Cela va donner plus d accélération de tes particules après leur émission . Donc, les particules émises les plus anciennes vont se retrouver plus espacées des particules émises les plus nouvelles .
Bien entendu , pour un effet de tunnel il faut que l accélération ne soit pas trop forte pour ne pas voir de trous entre les particules anciennes et nouvelles . Donc , il faut peut être jouer avec leurs tailles aussi , en augmentant la taille en même temps que tu augmentes leur accélération ( PSYS_PART_START_SCALE, PSYS_PART_END_SCALE )
Essayer de les faire chevaucher en quelque sorte en jouant sur la vitesse après émission et leurs tailles

Le fait de multiplier les prims pour les particules risque de ne pas te satisfaire , notamment parce que tu auras atteint le maximum de particules permises par le viewer. Il vaut mieux utiliser plusieurs prims dans le cas ou tu veux leur donner un effet différetou une trajectoire différente . Par exemple si tu voulais faire un tunnel avec un coude , dans ce cas , il t en faudrait plusieurs avec des rotations différentes

Dernière modification par redpurple ; 03/12/2011 à 09h16.
Citation :
Publié par Elenia B.
A ben oui . Je savais pas que ça existait ça. C'est vrai pas besoin d'un script dans chaque prim. Et puis je me suis gourée. Fatiguée moi le soir. Je corrige
On a gagné pas mal de fonctions pour agir sur les prims liées ces derniers temps :

llGetLinkNumberOfSides
llGetLinkPrimitiveParams
llLinkParticleSystem
llLinkSitTarget
llAvatarOnLinkSitTarget
llGetLinkMedia
llClearLinkMedia
llSetLinkCamera
llSetLinkTextureAnim
llSetLinkPrimitiveParamsFast

Et j'en oublie peut-être
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés