Difference between revisions of "No sensor/ja"
Jump to navigation
Jump to search
Asuka Neely (talk | contribs) (New page: {{LSL_Event/ja|event_id=14|event_delay|event=no_sensor |event_desc={{LSLG/ja|llSensor}}ライブラリ関数呼び出しの結果です。 |constants|spec|caveats|examples= <lsl> //List a...) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{LSL_Event/ja|event_id=14|event_delay|event=no_sensor | {{Issues/SVC-2409/ja}}{{LSL_Event/ja | ||
|event_desc={{LSLG/ja|llSensor}} | |event_id=14 | ||
|constants|spec|caveats|examples= | |event_delay | ||
< | |event=no_sensor | ||
// | |event_desc={{LSLG/ja|llSensor}} や {{LSLG/ja|llSensorRepeat}} の呼び出しで発生します。 | ||
|constants | |||
|spec | |||
|caveats= | |||
*sensor/no_sensor は必ずしも最善なやり方ではありません: | |||
**何かが範囲内/範囲外に入っているかを調べるのは、やり過ぎです。このケースでは {{LSLG/ja|llGetObjectDetails}} を、 [[#Useful Snippets|便利なスニペット]] の章にあるように使用しましょう。 | |||
**アバターが地域にいるかどうかを調べるには、 {{LSLG/ja|llGetAgentSize}} を使ってみましょう。 | |||
|examples= | |||
<source lang="lsl2">//範囲内の全てのアバターをリストアップします。 | |||
default { | default { | ||
on_rez(integer i) { | on_rez(integer i) { | ||
Line 10: | Line 18: | ||
sensor(integer num) { | sensor(integer num) { | ||
integer i = 0; | integer i = 0; | ||
do { | |||
llOwnerSay(llDetectedName(i) + " is " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m away."); | llOwnerSay(llDetectedName(i) + " is " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m away."); | ||
}while(++i < num); | |||
} | } | ||
no_sensor() { | no_sensor() { | ||
llOwnerSay("No avatars in range."); | llOwnerSay("No avatars in range."); | ||
} | } | ||
} | }</source> | ||
</ | |||
|helpers | |helpers= | ||
|also_header|also_events | <source lang="lsl2">//ユーザが範囲内にいないことを発見する他のやり方です。 | ||
|also_functions= | //センサーをまったく使っていないので、上の警告はあてはまりません。 | ||
|notes|mode|deprecated | integer InRange(key uuid, float distance) | ||
{ | |||
list data = llGetObjectDetails(uuid, [OBJECT_POS]); | |||
if(data == []) | |||
return 0; | |||
return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist; | |||
}</source> | |||
|also_header | |||
|also_events | |||
|also_functions={{LSL DefineRow||{{LSLG/ja|llSensor}}}} | |||
{{LSL DefineRow||{{LSLG/ja|llSensorRepeat}}}} | |||
|also_articles | |||
|also_footer | |||
|notes | |||
|mode | |||
|deprecated | |||
|cat1=Sensor | |cat1=Sensor | ||
|cat2 | |cat2 | ||
|cat3 | |cat3 | ||
|cat4}} | |cat4 | ||
}} |
Latest revision as of 09:16, 21 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
警告
- スクリプトに sensor イベントがないと、 no_sensor が発生しません。 ~ SVC-2409
- sensor/no_sensor は必ずしも最善なやり方ではありません:
- 何かが範囲内/範囲外に入っているかを調べるのは、やり過ぎです。このケースでは llGetObjectDetails を、 便利なスニペット の章にあるように使用しましょう。
- アバターが地域にいるかどうかを調べるには、 llGetAgentSize を使ってみましょう。
サンプル
//範囲内の全てのアバターをリストアップします。
default {
on_rez(integer i) {
llSensor("", "", AGENT, 100000, 10000);
}
sensor(integer num) {
integer i = 0;
do {
llOwnerSay(llDetectedName(i) + " is " + (string)llVecDist(llGetPos(), llDetectedPos(i)) + "m away.");
}while(++i < num);
}
no_sensor() {
llOwnerSay("No avatars in range.");
}
}
便利なスニペット
//ユーザが範囲内にいないことを発見する他のやり方です。
//センサーをまったく使っていないので、上の警告はあてはまりません。
integer InRange(key uuid, float distance)
{
list data = llGetObjectDetails(uuid, [OBJECT_POS]);
if(data == [])
return 0;
return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist;
}
参考情報
関数
• | llSensor | |||
• | llSensorRepeat |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。