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
来客数: -
最終更新:2007年05月06日 19:57