ソラマメブログ
< 2025年04月 >
S M T W T F S
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

2007年11月28日

SIM内テレポーター(リンデンスクリプト Tips)

 ビルやモール等に見られるテレポート用のスクリプトです。
テレポーターを右クリックし、パイメニューのTeleportをクリックすると指定した座標へ瞬間移動します。
テレポート先に移動した後、テレポーターは自動的に元の位置に戻ります。
SIM内でのテレポートが可能です。
SIM内テレポーター(リンデンスクリプト Tips)
「スクリプト内容」
//
//  Teleportation(IN-SIM) SCRIPT    V1.0
//
//                    Created by Zero2000 Kid   2007/11/28


//----------- PARAMETER SET -----------------//
vector targetPoint=<242,63,26>;
// ------------------------------------------//

vector basicPoint;
integer sitflg = FALSE;
key sitavkey;

teleport( vector d ) {
    if ( d.z > 768 ) d.z = 768;
    integer s = (integer)(llVecMag(d-llGetPos())/10)+1;
    if ( s > 100 ) s = 100;
    integer e = (integer)( llLog( s ) / llLog( 2 ) );
    list rules = [ PRIM_POSITION, d ];
    integer i;
    for ( i = 0 ; i < e ; ++i ) rules += rules;
    integer r = s - (integer)llPow( 2, e );
    if ( r > 0 ) rules += llList2List( rules, 0, r * 2 + 1 );
    llSetPrimitiveParams( rules );
}


default {
    state_entry() {
        llSetText("right click for Teleport", <1,1,1>, 1.0);
        llSitTarget(<0.0,0.0,0.1>,ZERO_ROTATION);
        llSetSitText("Teleport");
        
    }
    
    on_rez(integer int) {
        llResetScript();
    }
    
    changed(integer change){
        if (change & CHANGED_LINK){
            sitavkey = llAvatarOnSitTarget();
            basicPoint = llGetPos();
            state move;                                  
        }
    }
}


state move {
    state_entry() {
        teleport(targetPoint);
        llUnSit(sitavkey);
        teleport(basicPoint);
        state default;
    }
}

「スクリプトの説明」
 スクリプトの基本動作は、「オブジェクトに座る→オブジェクトを移動する→オブジェクトから立たせる→
オブジェクトを元の位置に戻す」となります。

1. 一行目のvector targetPoint=<242,63,26>でテレポート先の座標を指定します。
2. オブジェクトにアバターが座ると(パイメニューのTeleportを選択)、changedイベントが発生します。
3. changedイベントの中では、llAvatarOnSitTargetで座ったアバターのUUIDを取得し、現在の座標を
  変数basicPoint に格納した後、state moveでmeveステートへ移行します。
4. meveステートでは、teleport関数を呼び出し、1で指定した座標へオブジェクトを移動します。
  *オブジェクトの移動には、teleport関数内のllSetPrimitiveParamsを使用します。
5. 目的地へ移動したら、llUnSitにてアバターをオブジェクトから立たせます。
6. 再びteleport関数を呼び出し、元の座標(basicPoint)へオブジェクトを戻します。
7. state defaultにてdefaultステートへ戻ります。


リンデンスクリプト Tips Intexへ







同じカテゴリー(リンデンスクリプトTips)の記事画像
サウンド再生スクリプト(リンデンスクリプト Tips)
カメラコントロール(リンデンスクリプト Tips)
標準時間表示スクリプト(リンデンスクリプト Tips)
プリムカウンター2(リンデンスクリプト Tips)
土地情報チェッカー(リンデンスクリプト Tips)
SIM負荷チェッカー(リンデンスクリプト Tips)
同じカテゴリー(リンデンスクリプトTips)の記事
 サウンド再生スクリプト(リンデンスクリプト Tips) (2009-12-16 20:13)
 カメラコントロール(リンデンスクリプト Tips) (2009-11-21 21:26)
 標準時間表示スクリプト(リンデンスクリプト Tips) (2009-11-02 00:34)
 プリムカウンター2(リンデンスクリプト Tips) (2009-10-12 20:40)
 土地情報チェッカー(リンデンスクリプト Tips) (2009-10-11 21:33)
 SIM負荷チェッカー(リンデンスクリプト Tips) (2009-08-09 20:26)
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。