vitesse

Répondre
Partager Rechercher
bonjour à tous,

j'ai modifié ce script de pluie qui me convient bien mais la seule chose que j'arrive pas à modifier c'est la vitesse. je souhaite que les particules descendent beaucoup plus lentement, quelque chose entre pluie et neige ?

default {
state_entry() {
llParticleSystem( [

PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0),
PSYS_PART_START_SCALE, <1, 1, 1>,
PSYS_PART_END_SCALE, <1, 1, 1>,
PSYS_PART_START_COLOR, <1, 1, 1>,
PSYS_PART_END_COLOR, <1, 1, 1>,
PSYS_PART_START_ALPHA, 1.0,
PSYS_PART_END_ALPHA, 1.0,
PSYS_SRC_BURST_PART_COUNT, 5,
PSYS_SRC_BURST_RATE, 0.05,
PSYS_PART_MAX_AGE, 2.7,
PSYS_SRC_MAX_AGE, 0.0,
PSYS_SRC_PATTERN, 8,
PSYS_SRC_ACCEL, <0.0,0.0, -10.2>,
PSYS_SRC_BURST_RADIUS, 35.0,
PSYS_SRC_BURST_SPEED_MIN, 0.0,
PSYS_SRC_BURST_SPEED_MAX, 0.0,
PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD,
PSYS_SRC_ANGLE_END, 30*DEG_TO_RAD,
PSYS_SRC_OMEGA, <0,0,0>,

PSYS_PART_FLAGS, ( 0
| PSYS_PART_INTERP_COLOR_MASK
| PSYS_PART_INTERP_SCALE_MASK
| PSYS_PART_WIND_MASK
) ] );
}
}
PSYS_SRC_ACCEL détermine l accélération de tes particules .
Dans ton exemple elle est de -10,2 mètres/s-2 sur l axe Z donc un peu supérieur à la gravité

Quelque chose qui plus ou moins flotterait pendant la chute comme des flocons de neige légers ou des plumes aurait une valeur inférieur à celle de la gravité donc < 0,0,-9.8>
Choisis une valeur négative plus faible pour la coordonée Z de PSYS_SRC_ACCEL


D autre part , tes particules ont une durée de vie qui est spécifiée par PSYS_PART_MAX_AGE, donc 2.7 secondes dans ton cas .
Donc en ralentissant l accélération de tes particules , elles vont se retrouver plus concentrées de leurs centre d émission

Ton émetteur est la prim ; mais étant donné le type de tes particules , elles sont émises à une distance PSYS_SRC_BURST_RADIUS = 35 mètres de ta prim plus haut que la prim .
Il faudra donc que tu changes PSYS_SRC_BURST_RADIUS . PSYS_SRC_BURST_RADIUS détermine la distance de du centre d émission par rapport à la prim .
Comme ta vitesse diminue , ton centre d émission doit être plus proche du sol si tu veux que tes particules atteignet le sol et tu peux réduire PSYS_SRC_BURST_RADIUS

L autre possibilité c est de diminuer l accélération , de ne pas changer PSYS_SRC_BURST_RADIUS et de rallonger leur temps de vie en augmentant PSYS_PART_MAX_AGE . Mais tu vas te retrouver avec plus de particules qu auparavant

Dernière modification par redpurple ; 07/03/2014 à 14h00.
super, merci pour tes conseils, j'ai pu me rapprocher de ce que je voulais.

j'ai une seconde question :

comment faire pour que ce script se déclenche lorsque l'avatar s'assoit sur une pose ball ?
en fait il y 4 poses ball liées afin de recevoir 4 personnes ensembles et il faudrait bien sur que le script ne se déclenche qu'une fois, quelque soit le nombre d'avatar posés.
Bonjour, il y a plusieurs solutions..une des plus simple est de compter les prims des boules sit liées...avec un evennement "change"....si nb_prim>4....envoyer la pluie , sinon, stopper la pluie.
Code PHP:

// Retourne le nombre d agents assis
integer GetNumberOfAgents()
{
    return 
llGetNumberOfPrims() - GetNumberOfPrims();
}
// Retourne le nombre de prims de l objet , avatars exclus
integer GetNumberOfPrims()
{
    if (
llGetAttached())
    {
        return 
llGetNumberOfPrims();
    }
    return 
llGetObjectPrimCount(llGetKey());
}

integer numeroPrim LINK_THIS;
// voir http://wiki.secondlife.com/wiki/LlParticleSystem#llLinkParticleSystem



showParticles(integer numeroPrim)
{
    list 
particles=  
    [
        
PSYS_SRC_TEXTUREllGetInventoryName(INVENTORY_TEXTURE0), 
        
PSYS_PART_START_SCALE, <111>, 
        
PSYS_PART_END_SCALE, <111>,
        
PSYS_PART_START_COLOR, <111>, 
        
PSYS_PART_END_COLOR, <111>, 
        
PSYS_PART_START_ALPHA1.0
        
PSYS_PART_END_ALPHA1.0
        
PSYS_SRC_BURST_PART_COUNT5,
        
PSYS_SRC_BURST_RATE0.05
        
PSYS_PART_MAX_AGE2.7,
        
PSYS_SRC_MAX_AGE0.0,
        
PSYS_SRC_PATTERN8,
        
PSYS_SRC_ACCEL, <0.0,0.0, -10.2>, 
        
PSYS_SRC_BURST_RADIUS35.0,
        
PSYS_SRC_BURST_SPEED_MIN0.0,
        
PSYS_SRC_BURST_SPEED_MAX0.0,
        
PSYS_SRC_ANGLE_BEGIN0*DEG_TO_RAD
        
PSYS_SRC_ANGLE_END30*DEG_TO_RAD,
        
PSYS_SRC_OMEGA, <0,0,0>, 
        
        
PSYS_PART_FLAGS, ( 
        
PSYS_PART_INTERP_COLOR_MASK 
        
PSYS_PART_INTERP_SCALE_MASK
        
PSYS_PART_WIND_MASK )];
    
llLinkParticleSystem(  numeroPrimparticles );
}
integer particulesEncours FALSE;
default
{
    
changed(integer c)
    {
        if (
CHANGED_LINK )
        {
            if ( !
particulesEncours  )
            { 
                if ( 
GetNumberOfAgents() >= )
                {
    
// anime particules
                    
showParticles(numeroPrim);
                    
particulesEncours TRUE;
                }
            }
            else
            {
                if ( 
GetNumberOfAgents() == )
    
// eteint particules
                    
llLinkParticleSystem(  numeroPrim, []);
                    
particulesEncours FALSE;
            }
        }
    }

Je ne sais pas sur quelle prim tu préfères que soit l émetteur de particules. : change numeroPrim au besoin . Et bien sur modifie la liste de particules à l intérieur de la fonction showParticles

Dernière modification par redpurple ; 07/03/2014 à 16h40.
Code PHP:

integer NbsPrims;
default
{
        
changed(integer change
        { 
        if (
change CHANGED_LINK
        { 
 
           
NbsPrims llGetNumberOfPrims();
            if (
NbsPrims>4
            {
                
llMessageLinked(LINK_ALL_CHILDREN0"pluie"NULL_KEY);//mettre llSay ou llWhisper si le prim contenant la pluie n 'est pas lié et adapter le script pluie en consequence
            
}
            else
            {
                
llMessageLinked(LINK_ALL_CHILDREN0"stop"NULL_KEY);            }                
            }
    }

Oops trop tard
Répondre

Connectés sur ce fil

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