Purrrwicca Posted February 27, 2015 Share Posted February 27, 2015 Is there a way to make paw print or foot prints flat to the ground? Not at an angle? integer Step = 0;// Mask Flags - set to TRUE to enableinteger glow = TRUE; // Make the particles glowinteger bounce = FALSE; // Make particles bounce on Z plan of objectinteger interpColor = TRUE; // Go from start to end colorinteger interpSize = FALSE; // Go from start to end sizeinteger wind = FALSE; // Particles effected by windinteger followSource = FALSE; // Particles follow the sourceinteger followVel = FALSE; // Particles turn to velocity direction// Choose a pattern from the following:// PSYS_SRC_PATTERN_EXPLODE// PSYS_SRC_PATTERN_DROP// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY// PSYS_SRC_PATTERN_ANGLE_CONE// PSYS_SRC_PATTERN_ANGLEinteger pattern = PSYS_SRC_PATTERN_DROP;// Select a target for particles to go towards// "" for no target, "owner" will follow object owner// and "self" will target this object// or put the key of an object for particles to go tokey target = "";// Particle paramatersfloat age = 133; // Life of each particlefloat maxSpeed = .1; // Max speed each particle is spit out atfloat minSpeed = .1; // Min speed each particle is spit out atstring texture = "59f587f3-f9ad-cb73-57b2-eb3de678f2d6"; // Texture used for particles, default used if blankfloat startAlpha = 1.0; // Start alpha (transparency) valuefloat endAlpha = 0.0; // End alpha (transparency) valuevector startColor = <0,0,0>; // Start color of particles <R,G,B>vector endColor = <0,0,0>; // End color of particles <R,G,B> (if interpColor == TRUE)vector startSize = <.4,.2,.7>; // Start size of particlesvector endSize = <.4,.4,.7>; // End size of particles (if interpSize == TRUE)vector push = <0,0,0.0>; // Force pushed on particles// System paramatersfloat rate = .3; // How fast (rate) to emit particlesfloat radius = .1; // Radius to emit particles for BURST patterninteger count = 1; // How many particles to emit per BURSTfloat outerAngle = 1.54; // Outer angle for all ANGLE patternsfloat innerAngle = 1.55; // Inner angle for all ANGLE patternsvector omega = <0,0,10>; // Rotation of ANGLE patterns around the sourcefloat life = 0; // Life in seconds for the system to make particles// Script variablesinteger flags;updateParticles(){flags = 0;if (target == "owner") target = llGetOwner();if (target == "self") target = llGetKey();if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;if (wind) flags = flags | PSYS_PART_WIND_MASK;if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;vector C;if(Step==0)C = <0,0,0>;else if(Step==1)C = <0,0,0>;else if(Step==2)C = <0,0,0>;else if(Step==3)C = <0,0,0>;else if(Step==4)C = <0,0,0>;else if(Step==5)C = <0,0,0>;else if(Step==6)C = <0,0,0>;Step++;if(Step==7) Step = 0;llParticleSystem([ PSYS_PART_MAX_AGE,age,PSYS_PART_FLAGS,flags,PSYS_PART_START_COLOR, C,PSYS_PART_END_COLOR, C,PSYS_PART_START_SCALE,startSize,PSYS_PART_END_SCALE,endSize,PSYS_SRC_PATTERN, pattern,PSYS_SRC_BURST_RATE,rate,PSYS_SRC_ACCEL, push,PSYS_SRC_BURST_PART_COUNT,count,PSYS_SRC_BURST_RADIUS,radius,PSYS_SRC_BURST_SPEED_MIN,minSpeed,PSYS_SRC_BURST_SPEED_MAX,maxSpeed,PSYS_SRC_TARGET_KEY,target,PSYS_SRC_INNERANGLE,innerAngle,PSYS_SRC_OUTERANGLE,outerAngle,PSYS_SRC_OMEGA, omega,PSYS_SRC_MAX_AGE, life,PSYS_SRC_TEXTURE, texture,PSYS_PART_START_ALPHA, startAlpha,PSYS_PART_END_ALPHA, endAlpha]);}default{state_entry(){updateParticles();llSetTimerEvent(.6);}timer(){string anim = llGetAnimation(llGetOwner());if ((anim == "Walking") || (anim == "Running") || (anim == "Turning Left") || (anim == "Turning Right") || (anim == "CrouchWalking")){updateParticles();}else{llParticleSystem([]);}}} Link to comment Share on other sites More sharing options...
Xiija Posted February 27, 2015 Share Posted February 27, 2015 mebbe try setting push to a negative z? <0,0,-100>; ETA: this didn't work Link to comment Share on other sites More sharing options...
Madelaine McMasters Posted February 27, 2015 Share Posted February 27, 2015 Hi Purrwicca, http://wiki.secondlife.com/wiki/LlParticleSystem I think you'll want to set the particle mask bit PSYS_PART_RIBBON_MASK, which will do two things... Emit particles that link end to end, and stretch as necessary to ensure that. Orient themselves along the Z axis of the emitter prim. #2 is the behavior you want, #1 is not. So I think you may have to start and stop the system for each paw print, which you could do by adding a little code to your timer routine to only start the particle generator on every other timer event. You could do that by incrementing a local variable, then peforming a modulo comparison on it. For example, in your timer event code, replace your call to updateParticles with something like this... integer skip;if (skip++%3 == 0){ updateParticles();}else { llParticleSystem([]);} That will only fire the particle system once every three timer events. The other two times, it will shut down the particle system. Change that 3 to something else if you want a larger pause between paws. If you set the burst rate and count to fire only one particle over the duration of your timer cycle, it should lay down just one paw print at a time. You'll also have to experiment with the emitter prim's orientation to make the particles face the way you want. I've never tried the ribbon mask, so my advice might be a bit... wrong. More reading/viewing... http://community.secondlife.com/t5/LSL-Scripting/ribbon-particle/m-p/2125231 Good luck, have fun! Link to comment Share on other sites More sharing options...
Ohjiro Watanabe Posted February 27, 2015 Share Posted February 27, 2015 I'm sure Maddy is right and that ribbons are the way to go. Not many examples unfortunately, but here is one that might give you some ideas: http://pastebin.com/ErJ6axwf Link to comment Share on other sites More sharing options...
Purrrwicca Posted March 24, 2015 Author Share Posted March 24, 2015 Thank you all ; ) >^..^< Link to comment Share on other sites More sharing options...
Rolig Loon Posted March 24, 2015 Share Posted March 24, 2015 Maddy's suggestion is the only thing I can think of. That script is a bit odd, though. I can't figure out what purpose this section of code serves: vector C;if(Step==0)C = <0,0,0>;else if(Step==1)C = <0,0,0>;else if(Step==2)C = <0,0,0>;else if(Step==3)C = <0,0,0>;else if(Step==4)C = <0,0,0>;else if(Step==5)C = <0,0,0>;else if(Step==6)C = <0,0,0>;Step++;if(Step==7) Step = 0; No matter what value Step has, C is always = <0,0,0>, so why do you bother changing Step at all? That whole section has the effect of saying vector C = ZERO_VECTOR; Your particles aren't even changing color over their own lifetimes, since PSYS_PART_START_COLOR, C,PSYS_PART_END_COLOR, C, They're always black, no matter what. Link to comment Share on other sites More sharing options...
Recommended Posts
Please take a moment to consider if this thread is worth bumping.
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now