LlRotTarget

De DigiWiki.

Version du 28 septembre 2012 à 07:22 par Djphil (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
 
// simple two-state rot target detection and rotation by Hypatia Callisto
// works, to detect a rotation target. An example I wrote
// since there is almost zilch for clean examples for 
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
 
integer rottarget;
 
default
{
 
    state_entry(){ 
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to starting point
    }
 
    not_at_rot_target()
    { 
        llRotTargetRemove( rottarget );
        llOwnerSay("not there"); //not at target
    }
 
    touch_start (integer total_number)
    {
        state rotatestate; // change to state for new position
    }
}
 
 
state rotatestate 
{ 
    state_entry(){ 
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point
    }
 
    at_rot_target(integer tnum, rotation targetrot, rotation ourrot)
    { 
        llRotTargetRemove( rottarget );
        llOwnerSay("there"); //reached the target
    }
 
    touch_start(integer touched){ 
        state default; 
    }
 
}
Outils personnels
donate
Google Ads