BlackSheep-LSL@Wiki llDetectedKey
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

llDetectedKey

key llDetectedKey(integer number)

検知されたアバター/オブジェクトのUUIDを取得する。

llDetectedKeyはデテクト系と呼ばれる関数の一つである。
デテクト系関数は以下のイベント内でしか効果がない。
 [[touch]]/[[touch_start]]/[[touch_end]]・・・タッチ系イベント
 [[collision]]/[[collision_start]]/[[collision_end]]・・・衝突系イベント
 [[sensor]]・・・センサーイベント
というのも、デテクト系関数とは「そのイベントを起こしたアバター/オブジェクトの情報を得る」ための関数だからである。
タッチ系イベント内で使用すれば「タッチしたアバターの情報を得る」関数となり、
衝突系イベントであれば「衝突したアバター/オブジェクトの情報を得る」関数、
センサーイベント内で使えば「センサーで検知されたアバター/オブジェクトの情報を得る」関数となる。

デテクト系関数の引数には何番目に検知されたアバター/オブジェクトかを指定する。
多くの場合、引数は0(最初に検知されたアバター/オブジェクト)である。
どういうことかと言うと、上記の特定イベントは、「イベントを起こしたアバター/オブジェクトの数」を通知してくる。
タッチスタートイベントであれば、「タッチを開始したアバターの人数」が通知される。
同時に複数のアバターがタッチを開始することはないので、人数は常に1人である。
であるので、デテクト系に指定する引数は、0(タッチを開始した最初の人)になる。

センサーイベントなどでは、同時に複数の対象が検出される可能性がある。
その場合は検知された対象の数が通知される。
例えば周囲50m以内にいるアバターを検知した結果、5人いた場合はセンサーイベントの引数に5が通知されてくる。
その場合、デテクト系関数の引数は、0を指定すると最初のアバターの情報、4が最後のアバターの情報になる(0から数える)。

以下の例はタッチしたアバターのUUIDを表示する。

default {
  touch_start(integer num_detected) {
    llSay(0, "Key = " + (string)llDetectedKey(0));
  }
}

以下の例は周囲50m以内のアバターを検知し、検知された対象のUUIDを全て表示する。

default {
  touch_start(integer num_detected){
    llSensor("", NULL_KEY, AGENT, 50.0, PI);
  }
  
  sensor(integer num_detected) {
    integer i;
    for (i = 0; i < num_detected; i ++){
      llSay(0, "No." + (string)i
        + " Key = " + (string)llDetectedKey(0));
    }
  }
}