Difference between revisions of "No sensor/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(One intermediate revision by one other user not shown)
Line 8: Line 8:
|caveats=
|caveats=
*sensor/no_sensor は必ずしも最善なやり方ではありません:
*sensor/no_sensor は必ずしも最善なやり方ではありません:
**何かが範囲内/範囲外に入っているかを調べるのは、やり過ぎです。このケースでは {{LSLG/ja|llGetObjectDetails}} を、 [[#Useful Snippets|便利なスペニット]] の章にあるように使用しましょう。
**何かが範囲内/範囲外に入っているかを調べるのは、やり過ぎです。このケースでは {{LSLG/ja|llGetObjectDetails}} を、 [[#Useful Snippets|便利なスニペット]] の章にあるように使用しましょう。
**アバターが地域にいるかどうかを調べるには、 {{LSLG/ja|llGetAgentSize}} を使ってみましょう。
**アバターが地域にいるかどうかを調べるには、 {{LSLG/ja|llGetAgentSize}} を使ってみましょう。
|examples=
|examples=
<lsl>//範囲内の全てのアバターをリストアップします。
<source lang="lsl2">//範囲内の全てのアバターをリストアップします。
default {
default {
     on_rez(integer i) {
     on_rez(integer i) {
Line 25: Line 25:
           llOwnerSay("No avatars in range.");
           llOwnerSay("No avatars in range.");
     }
     }
}</lsl>
}</source>


|helpers=
|helpers=
<lsl>//ユーザが範囲内にいないことを発見する他のやり方です。
<source lang="lsl2">//ユーザが範囲内にいないことを発見する他のやり方です。
//センサーをまったく使っていないので、上の警告はあてはまりません。
//センサーをまったく使っていないので、上の警告はあてはまりません。


Line 37: Line 37:
         return 0;
         return 0;
     return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist;
     return llVecDist(llList2Vector(data, 0), llGetPos()) <= dist;
}</lsl>
}</source>
|also_header
|also_header
|also_events
|also_events

Latest revision as of 09:16, 21 February 2016

説明

! イベント: no_sensor( ){ ; }

llSensorllSensorRepeat の呼び出しで発生します。


警告

  • スクリプトに sensor イベントがないと、 no_sensor が発生しません。 ~ SVC-2409
    • 空の sensor が条件を満たしているのに、 no_sensor が発生します。
  • 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

特記事項

議論

   sensor がないと llSensorRepeatno_sensor を発生させません。
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。