Jump to content

Isobeast

Resident
  • Posts

    68
  • Joined

  • Last visited

Everything posted by Isobeast

  1. Thanks a lot! 😊 Now both wheels are turning correctly! float WheelDiameter = 0.71403; vector vehdir = <1.0,0.0,0.0> * llGetRootRotation(); // Global direction of vehicle float speed = vehdir * llGetVel(); // Speed in fwd direction // Convert to wheel rotation rate in radians/sec float rate = speed / (WheelDiameter * PI); llSetLinkPrimitiveParamsFast(PROP_PRIM, [PRIM_OMEGA, PROP_AXIS, rate * 5, 1, PRIM_LINK_TARGET, PROP_PRIM_2, PRIM_OMEGA, PROP_AXIS, rate * 5, 1]); Only it is not clear how to limit this part by 10%? 🤔
  2. Thank you! Wondering how to determine the direction +/- ... and is it possible to keep the throttle here and does it make any sense?
  3. I did as you recommended and it looks very good. This is my first motorcycle, and I am not sure "to shift, or not to shift" gears/throttle. Another problem is that the speed of rotation of the wheels depends on the throttle valve. And if I remove the throttling, how then to calculate the speed of rotation of the wheels, depending on what? if (throttle) { llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, < fwd * (throttle * 0.01), 0, 0 > ); llSetLinkPrimitiveParamsFast(WHEEL_PRIM, [PRIM_OMEGA, WHEEL_AXIS, throttle * 0.2, 1, PRIM_LINK_TARGET, WHEEL_PRIM_2, PRIM_OMEGA, WHEEL_AXIS, throttle * 0.2, 1]); } New wheelie: if (level & CONTROL_UP) { linear.x = 20.0; angular.y = 25.0; } if (level & CONTROL_DOWN) { linear.x = -1.00; angular.y = -25.00; } Addition: I tried to adjust the rotation of the wheels depending on the speed, but when reversing, the wheels continue to rotate forward. float speed = llVecMag(llGetVel()); llSetLinkPrimitiveParamsFast(PROP_PRIM, [PRIM_OMEGA, PROP_AXIS, speed, 1, PRIM_LINK_TARGET, PROP_PRIM_2, PRIM_OMEGA, PROP_AXIS, speed, 1]);
  4. Yes, the script does have reverse and gear/throttle shifting. This is how it looks like: if (level & CONTROL_FWD) { if (edge & CONTROL_FWD) { if (throttle < 100) throttle += 10; throttlePress = 0; } else if (++throttlePress == 10) { throttlePress = 0; if (throttle < 100) throttle += 10; } } if (level & CONTROL_BACK) { if (edge & CONTROL_BACK) { if (throttle > -30) throttle -= 10; throttlePress = 0; } else if (++throttlePress == 10) { throttlePress = 0; if (throttle > -30) throttle -= 10; } }
  5. Hello! I am trying to add a wheelie to a motorcycle script. Here is my control section. However, the bike takes off into the air if I ride on the rear wheel. How to fix it? Thanks a bunch for any help! control(key name, integer level, integer edge) { vector linear; vector angular; ... if (level & CONTROL_UP) { angular.y = 25.0; // wheelie up } if (level & CONTROL_DOWN) { angular.y = -25.00; // wheelie down } if (linear) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, linear); if (angular) llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular); }
  6. Thanks a lot! finally the script works as it should! however, a slight modification had to be made. the first part worked just fine, but there were some difficulties with the mouselook. I began to sort out various combinations of what you all advised me and quite accidentally decided to try using CONTROL_LEFT/RIGHT instead of CONTROL_ROT_LEFT/RIGHT for mouselook. and behold !! Mouselook works ! my joy has no boundaries! Thank you very much to all of you, without you I wouldn't have succeeded! here are the names of these heroes in order of appearance: @Rolig Loon @Mollymews @Xiija @Wulfie Reanimator if (level & CONTROL_ROT_LEFT && !(held & CONTROL_LBUTTON)) { angular.x = -50.0; } if (level & CONTROL_ROT_RIGHT && !(held & CONTROL_LBUTTON)) { angular.x = 50.0; } if ((level & CONTROL_ROT_LEFT) && (held & CONTROL_LBUTTON)) { angular.z = 10.0; } if ((level & CONTROL_ROT_RIGHT) && (held & CONTROL_LBUTTON)) { angular.z = -10.0; } // mouselook: if ((level & CONTROL_LEFT) && (held & CONTROL_ML_LBUTTON)) { angular.z = 50.0; } if ((level & CONTROL_RIGHT) && (held & CONTROL_ML_LBUTTON)) { angular.z = -50.0; } if (level & CONTROL_LEFT) { angular.x = -50.0; } if (level & CONTROL_RIGHT) { angular.x = 50.0; }
  7. This is the current version: vector sitPosition = < 0.00000, 0.00000, 0.50000 > ; vector sitRotation = < 0.00000, 0.00000, 0.00000 > ; vector vehicleRot = < 0.00000, 0.00000, 0.00000 > ; vector camOffset = < -6.00000, 0.00000, 2.00000 > ; float fwd = 20.0; integer throttle; default { state_entry() { llSetStatus(STATUS_PHYSICS, FALSE); llSetVehicleType(1); llSetSitText("Ride..."); llCollisionSound("", 0.0); llSitTarget(sitPosition, llEuler2Rot(sitRotation * DEG_TO_RAD)); rotation rot = llEuler2Rot(vehicleRot * DEG_TO_RAD); llSetCameraAtOffset(-camOffset * rot); llSetCameraEyeOffset(camOffset * rot); llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, rot); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.50); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 10.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.20); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.60); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.50); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1.00); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.20); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2.70); llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.70); llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 2.00); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.00); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.50); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 1000.0); llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.00); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, < 10.0, 10.0, 10.0 > ); llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, < 20.0, 20.0, 20.0 > ); llRemoveVehicleFlags(-1); llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY | VEHICLE_FLAG_CAMERA_DECOUPLED); } on_rez(integer start) { llResetScript(); } changed(integer change) { if (change & CHANGED_LINK) { key agent = llAvatarOnSitTarget(); if (agent) { if (agent == llGetOwner()) { llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS); } else { llInstantMessage(agent, "You are not the owner!"); llUnSit(agent); } } else { llResetScript(); } } } run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llSetStatus(STATUS_PHYSICS | STATUS_BLOCK_GRAB_OBJECT, TRUE); llTakeControls( CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON, TRUE, FALSE); llSetTimerEvent(0.5); } } control(key name, integer level, integer edge) { vector linear; vector angular; if (level & CONTROL_FWD) { angular.y += 15.0; } if (level & CONTROL_BACK) { angular.y -= 15.0; } if (level & edge & CONTROL_UP) { if (throttle < 100) { throttle += 10; llOwnerSay("Throttle " + (string) throttle + "%"); } } if (level & edge & CONTROL_DOWN) { if (throttle > 0) { throttle -= 10; llOwnerSay("Throttle " + (string) throttle + "%"); } } if (level & CONTROL_ROT_LEFT) { angular.x = -50.0; angular.z = 0.0; } if (level & CONTROL_ROT_RIGHT) { angular.x = 50.0; angular.z = -0.0; } integer start = level & edge; integer end = ~level & edge; integer held = level & ~edge; integer untouched = ~(level | edge); if ((held & CONTROL_ROT_RIGHT) && (held & CONTROL_LBUTTON) || (held & CONTROL_ML_LBUTTON)) { angular.z = 10.0; } if ((held & CONTROL_ROT_LEFT) && (held & CONTROL_LBUTTON) || (held & CONTROL_ML_LBUTTON)) { angular.z = -10.0; } if (linear) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, linear); if (angular) llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular); } timer() { if (throttle) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, < fwd * (throttle / 100.0), 0, 0 > ); } }
  8. Thanks a lot! I am absolutely sure that from the point of view of mathematics and logic everything is correct here, and no one would have done it better, but script stubbornly refuses to do what I need. I came across such a post where there is a link to a script using a mouse button and came to the conclusion that perhaps everything is not as simple as it seemed to me. maybe the author @animats will bring some clarity, I apologize for unceremoniously dragging you into this topic. I will try to bring a little more clarity to what I expect from the script. I sit on the object. if I hold down the mouse button and rotate ( A / D keys ), there should be movement along the Z axis without tilting along the X-axis (which does not happen - unfortunately, there is a rotation along the X-axis and Z immediately). in mouselook the same thing should happen.
  9. Here is the whole script vector sitPosition = < 0.00000, 0.00000, 0.50000 > ; vector sitRotation = < 0.00000, 0.00000, 0.00000 > ; vector vehicleRot = < 0.00000, 0.00000, 0.00000 > ; vector camOffset = < -6.00000, 0.00000, 2.00000 > ; float fwd = 20.0; integer throttle; default { state_entry() { llSetStatus(STATUS_PHYSICS, FALSE); llSetVehicleType(1); llSetSitText("Ride..."); llCollisionSound("", 0.0); llSitTarget(sitPosition, llEuler2Rot(sitRotation * DEG_TO_RAD)); rotation rot = llEuler2Rot(vehicleRot * DEG_TO_RAD); llSetCameraAtOffset(-camOffset * rot); llSetCameraEyeOffset(camOffset * rot); llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, rot); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.50); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 10.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.20); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.60); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.50); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1.00); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.20); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2.70); llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.70); llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.00); llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 2.00); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.00); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.50); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 1000.0); llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.00); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, < 10.0, 10.0, 10.0 > ); llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, < 20.0, 20.0, 20.0 > ); llRemoveVehicleFlags(-1); llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY | VEHICLE_FLAG_CAMERA_DECOUPLED); } on_rez(integer start) { llResetScript(); } changed(integer change) { if (change & CHANGED_LINK) { key agent = llAvatarOnSitTarget(); if (agent) { if (agent == llGetOwner()) { llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS); } else { llInstantMessage(agent, "You are not the owner!"); llUnSit(agent); } } else { llResetScript(); } } } run_time_permissions(integer perm) { if (perm & PERMISSION_TAKE_CONTROLS) { llSetStatus(STATUS_PHYSICS | STATUS_BLOCK_GRAB_OBJECT, TRUE); llTakeControls( CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON, TRUE, FALSE); llSetTimerEvent(0.5); } } control(key name, integer level, integer edge) { vector linear; vector angular; if (level & CONTROL_FWD) { angular.y += 15.0; } if (level & CONTROL_BACK) { angular.y -= 15.0; } if (level & edge & CONTROL_UP) { if (throttle < 100) { throttle += 10; llOwnerSay("Throttle " + (string) throttle + "%"); } } if (level & edge & CONTROL_DOWN) { if (throttle > 0) { throttle -= 10; llOwnerSay("Throttle " + (string) throttle + "%"); } } if (level & CONTROL_ROT_LEFT) { angular.x = -50.0; angular.z = 0.0; } if (level & CONTROL_ROT_RIGHT) { angular.x = 50.0; angular.z = -0.0; } integer start = level & edge; integer end = ~level & edge; integer held = level & ~edge; integer untouched = ~(level | edge); // Tried both recommended versions here: /* if ((held & (CONTROL_LEFT|CONTROL_ROT_LEFT) & CONTROL_LBUTTON)) { angular.z = 10.0; } if ((held & (CONTROL_RIGHT|CONTROL_ROT_RIGHT) & CONTROL_LBUTTON)) { angular.z = -10.0; }*/ /* if ((held & CONTROL_ROT_RIGHT) && (held & CONTROL_LBUTTON)) { angular.z = -10.0; } if ((held & CONTROL_ROT_LEFT) && (held & CONTROL_LBUTTON)) { angular.z = 10.0; }*/ // My try: if (held & (CONTROL_ROT_LEFT & CONTROL_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_LBUTTON)) { angular.z = -10.0; } if (held & (CONTROL_ROT_LEFT & CONTROL_ML_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_ML_LBUTTON)) { angular.z = -10.0; } if (linear) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, linear); if (angular) llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular); } timer() { if (throttle) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, < fwd * (throttle / 100.0), 0, 0 > ); } }
  10. could it be related to flags? these are the flags I used llRemoveVehicleFlags(-1); llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_CAMERA_DECOUPLED); here is the whole Control event control(key name, integer level, integer edge) { vector linear; vector angular; if(level & CONTROL_FWD) { angular.y += 15.0; } if (level & CONTROL_BACK) { angular.y -= 15.0; } if(level & edge & CONTROL_UP) { if(throttle < 100) { throttle += 10; llOwnerSay("Throttle "+(string)throttle+"%"); } } if(level & edge & CONTROL_DOWN) { if(throttle > 0) { throttle -= 10; llOwnerSay("Throttle "+(string)throttle+"%"); } } if(level & CONTROL_ROT_LEFT) { angular.x = -50.0; } if(level & CONTROL_ROT_RIGHT) { angular.x = 50.0; } integer start = level & edge; integer end = ~level & edge; integer held = level & ~edge; integer untouched = ~(level | edge); if (held & (CONTROL_ROT_LEFT & CONTROL_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_LBUTTON)) { angular.z = -10.0; } if (held & (CONTROL_ROT_LEFT & CONTROL_ML_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_ML_LBUTTON)) { angular.z = -10.0; } if(linear) llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, linear); if(angular) llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular); }
  11. Thanks! I tried both the recommended versions, but it does not respond to the held mouse button and is not controlled at all in the mouselook... here's what i did. can you have any thoughts on this? run_time_permissions(integer perm) { if(perm & PERMISSION_TAKE_CONTROLS) { llSetStatus(STATUS_PHYSICS|STATUS_BLOCK_GRAB_OBJECT, TRUE); llTakeControls( CONTROL_FWD| CONTROL_BACK| CONTROL_ROT_LEFT| CONTROL_ROT_RIGHT| CONTROL_LEFT| CONTROL_RIGHT| CONTROL_UP| CONTROL_DOWN| CONTROL_LBUTTON| CONTROL_ML_LBUTTON, TRUE, FALSE); llSetTimerEvent(0.5); } } control(key name, integer level, integer edge) ... integer start = level & edge; integer end = ~level & edge; integer held = level & ~edge; integer untouched = ~(level | edge); // non mouselook: if (held & (CONTROL_ROT_LEFT & CONTROL_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_LBUTTON)) { angular.z = -10.0; } // for mouselook: if (held & (CONTROL_ROT_LEFT & CONTROL_ML_LBUTTON)) { angular.z = 10.0; } if (held & (CONTROL_ROT_RIGHT & CONTROL_ML_LBUTTON)) { angular.z = -10.0; }
  12. I want to add a little to the question. * holding the left mouse button and turning (A/D keys or arrows)
  13. thanks for the reply! Why did I think it would be something like this if (CONTROL_ROT_RIGHT + CONTROL_LBUTTON) { DO STUFF } can it be done like this?
  14. how to make the vehicle perform the following actions while holding down the left mouse button? thanks! control(key name, integer level, integer edge) IN MOUSELOOK: -> left mouse button + turn LEFT - "A"/left arrow key angular.z = 10.0; angular.x = 0.0; -> left mouse button + turn RIGHT - "D"/right arrow key angular.z = -10.0; angular.x = 0.0;
  15. Genius! Thank you so much! vector vStartPos; rotation rStartRot; default { state_entry() { llListen(0, "", "", ""); vStartPos = llGetPos(); rStartRot = llGetRot(); } listen(integer chan, string name, key id, string msg) { if (msg == "off") { // llSetKeyframedMotion([], []); llSetKeyframedMotion([], [KFM_COMMAND, KFM_CMD_STOP]); llSetRegionPos(vStartPos); llSetRot(rStartRot); } else if (msg == "on") { // llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_PHYSICS_SHAPE_TYPE, PRIM_PHYSICS_SHAPE_CONVEX]); llSetKeyframedMotion([ < 0, 0, 0 > , // Translation llEuler2Rot( < 0.0, 0.0, PI / 2 > ), // Rotation 1, // Time < 1.5, 3.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < 3.5, 1.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < 3.5, -1.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < 1.5, -3.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < -1.5, -3.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < -3.5, -1.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < -3.5, 1.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1, < -1.5, 3.5, 0 > , llEuler2Rot( < 0.0, 0.0, PI / 2 > ), 1 ], [KFM_MODE, KFM_LOOP]); } } }
  16. Thank you so much! it turned out something like this : llSetKeyframedMotion([ <0,0,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <1.5,3.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <3.5,1.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <3.5,-1.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <1.5,-3.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <-1.5,-3.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <-3.5,-1.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <-3.5,1.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1, <-1.5,3.5,0>, llEuler2Rot(<0.0,0.0,PI/2>), 1 ], [KFM_MODE, KFM_LOOP]); it would be nice just awesome to know how to return the object to its original position and reset the path so that it starts from the beginning each time i toggle motion on/off? llSetKeyframedMotion seems pretty unpredictable! what if, for example, I hold the object while moving with the right button, and the path breaks ...❓
  17. Hello! I'm trying to animate a flying object using llSetKeyframedMotion and set a trajectory for it, but on turns it starts to move sideways and I need to add rotation. here comes the problem. how to add rotation there too? because for now it does only one of two things - either rotation or movement. Here is my testing 8 points motion: llSetKeyframedMotion([<0,0,0>, 1, <1.5,3.5,0>, 1, <3.5,1.5,0>, 1, <3.5,-1.5,0>, 1, <1.5,-3.5,0>, 1, <-1.5,-3.5,0>, 1, <-3.5,-1.5,0>, 1, <-3.5,1.5,0>, 1, <-1.5,3.5,0>, 1 ], [KFM_DATA, KFM_TRANSLATION, KFM_MODE, KFM_LOOP]); and testing rotation: llSetKeyframedMotion([llEuler2Rot(<0.0,0.0,PI/2>), 0.5],[KFM_DATA,KFM_ROTATION, KFM_MODE,KFM_LOOP]);
×
×
  • Create New...