llSensorRepeat

llSensorRepeat

llSensorRepeat( string 名前 , key ID , integer タイプ , float 距離 , float 角範囲 , float 率 )

機能概略

"距離"と"角範囲"で決まる半球形の範疇に、"タイプ"で示される者がいるかどうかでセンサーイベントを起こします。

サンプル

rotation rROT; 
integer iOPENED = FALSE;

default{
    state_entry(){
        rROT = [[llGetRot]]();
        llSensorRepeat("", NULL_KEY, AGENT, 5.0, PI, 3.0);
    }
  
    sensor(integer total_number) {
        if (!iOPENED){
        [[llSetRot]](rROT * [[llEuler2Rot]](<0.0, 90.0, 180.0> * DEG_TO_RAD));
            iOPENED = TRUE;
        }
    } 

    no_sensor() {
        if (iOPENED){
            llSetRot(rROT * llEuler2Rot(<0.0, 90.0, 90.0> * DEG_TO_RAD));
            iOPENED = FALSE;
        }
    }
}
サンプルの使い方
1) オブジェクトを4つ作成します。
1-1) 形:立方体 サイズ:x=2.000 Y=3.000 Z=0.500 回転:Y=90.00 Z=90.00 中空の形:90
   位置:基準となるので、整数の場所キボンヌ
1-2) 形:トーラス(ドーナツ) サイズ:x=0.500 Y=2.800 z=0.500 回転:x=180.00 Z=180.00 パスカット:B=0.500 E=1.000
   位置:x=基準 y=基準 z=基準-1.600
1-3) 形:トーラス(ドーナツ) サイズ:x=0.500 Y=2.800 z=0.500 回転:Z=180.00 パスカット:B=0.500 E=1.000
   位置:x=基準 y=基準 z=基準+1.600
1-4) 形:立方体 サイズ:x=0.320 Y=3.600 z=2.700 パスカット:B=0.375 E=0.875
   位置:x=基準 y=基準-.0900 z=基準
2) 1-4の新しいスクリプトの全文を、サンプルと置き換えて保存します。
3) 4,3,2,1の順に選択し、リンクさせます。(必ず1を最後に(親プリムに)します。)
4) 近づいたり離れたりして、動作を確認します。
5) 親プリムが回転しているため、llEuler2Rotの引数がわけわかめな数値になっていることに悩みながらテクスチャを張ったりします。

Tips

  •  角範囲は、ラジアンで表します。左右対称となるため、半分の値になります。このため、PIを与えると全方向になります。

詳細な説明

距離は96mまでです。これを超えて動作する場合は、バグです。

タイプについて
定数 対象
AGENT 1 エージェント
ACTIVE 2 Physicalで、動いているオブジェクトまたはスクリプト(llListenも動いているスクリプトになります。)
PASSIVE 4 動いていないもの
SCRIPTED 8 動いているスクリプトを含むもの
組み合わせるときには「AGENT | ACTIVE」のように、|でつなぎます。
SCRIPTEDの場合の動作は、不明な点が多いようです。

率は、センサーが働く周期を秒数で示します。

History


来客数:  -

選択肢 投票
役に立った (0)
役立たずだった (0)

名前:
コメント:

タグ:

+ タグ編集
  • タグ:
最終更新:2007年05月06日 19:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。