llGetEnergy/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: llGetEnergy( );

オブジェクトのエネルギー量を最大量を基準としたパーセンテージ表記で返します。

Examples

// このスクリプトではほとんどの物理オブジェクトのエネルギー使用を確認します。
// Last version: 07 October 2009 by Gianni Lupindo
 
vector homePos;
integer timerCount = 0;
integer testCount = 0;
string space = "  "; 
 
// 10m 以上移動する
moveTo(vector origin, vector destination) {
    float dist = llVecDist(origin, destination);
    integer passes = llCeil( llLog(dist/10.0) / llLog(2.0) );
    integer i;
    list params = [PRIM_POSITION, destination];
    for (i=0; i<passes; i++) {
        params = (params=[]) + params + params;
    }
    // ここで、実際にプリムを動かす
    llSetPrimitiveParams(params);
}
 
returnHome()
{
    llSetTimerEvent(0);
    llSetStatus(STATUS_PHYSICS, FALSE);
    llSleep(0.2);
    moveTo(llGetPos(),homePos);
    llSetRot(ZERO_ROTATION);
}
 
default
{
    state_entry() {
        homePos = llGetPos();
        llOwnerSay("Mass is "+(string)llGetMass());
    }
    on_rez(integer _n) {
        llResetScript();
    }
    touch_start(integer n) {
        space = "  ";
        do {
          llSleep(0.5);
        } while (llGetEnergy() < 0.998);
        llSetPos( llGetPos()+<0,0,5>);
        llSetStatus(STATUS_PHYSICS,TRUE);
        llSetTimerEvent(1.0);
 
        vector impulse = <0,0,5>*llGetMass();
        if (testCount == 0) {
            llOwnerSay("ApplyImpulse (test 0)");
            llApplyImpulse( impulse, TRUE ); 
        } else if (testCount == 1) {
            llOwnerSay("ApplyRotImpulse (test 1)");
            llApplyRotationalImpulse( impulse, TRUE);
        } else if (testCount == 2) {
            llOwnerSay("PushObject (test 2)");
            llPushObject(llGetKey(), impulse, ZERO_VECTOR, TRUE); 
        } else if (testCount == 3) {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("Force (test 3)");
            llSetForce( impulse, TRUE ); 
        } else if (testCount == 4) {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("Torque (test 4)");
            llSetTorque( impulse, TRUE ); 
        } else if (testCount == 5) {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("Force and Torque (test 5)");
            llSetForceAndTorque( impulse, impulse, TRUE ); 
        } else if (testCount == 6) {
            llSetForceAndTorque( ZERO_VECTOR, ZERO_VECTOR, TRUE ); 
            llOwnerSay("MoveToTarget (test 6)");
            llMoveToTarget( impulse, 0.4 ); 
        } else if (testCount == 7) {
            llStopMoveToTarget ( ); 
            llOwnerSay("RotLookAt (test 7)");
            llRotLookAt( llEuler2Rot(impulse*DEG_TO_RAD), 0.4, 0.4 ); 
        } else if (testCount == 8) {
            llStopLookAt ( ); 
            llOwnerSay("LookAt (test 8)");
            llLookAt( impulse, 0.4, 0.4 ); 
        } else if (testCount == 9) {
            llStopLookAt ( ); 
            llOwnerSay("Hover Height (test 9)");
            llSetHoverHeight( 5.0, TRUE, 0.5);
        } else if (testCount == 10) {
            llSetHoverHeight( 0, TRUE, 0.5);
            llOwnerSay("Ground Repel (test 10)");
            llGroundRepel( 5, TRUE, 0.5);
        } else if (testCount == 11) {
            llGroundRepel( 0, TRUE, 0.5);
            llOwnerSay("Buoyancy (test 11)");
            llSetBuoyancy( 0.997 );
        } else {
            llSetBuoyancy( 0.0 );
            llOwnerSay("Done");
        }
        timerCount = 0;
        if (testCount != 12) {
            llOwnerSay((string)timerCount+". Energy:    "+space+(string)llGetEnergy());
            testCount++;
        }
        else {
            testCount = 0; 
            returnHome();
        }
    }
    timer() {
        timerCount++;
        if (timerCount >= 10) space = "";
        llOwnerSay((string)timerCount+". Energy:    "+space+(string)llGetEnergy());
        if (timerCount>=10) {
            returnHome();
        }
    }
    collision(integer n) {
        llOwnerSay("*. Energy:    "+space+(string)llGetEnergy()+" (collision)");
    }
}

Deep Notes

Search JIRA for related Issues

Signature

function void llGetEnergy();