Difference between revisions of "LlSensorRepeat/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL_Function/ja |func=llSensorRepeat |sort=SensorRepeat |func_id=29|func_sleep=0.0|func_energy=10.0 |p1_type=string|p1_name=name |p2_type=key|p2_name=id |p3_type=integer|p3_name=type|p3_...)
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LSL_Function/ja
{{Issues/SVC-2409/ja}}{{Issues/SVC-4301}}{{LSL_Function/uuid/ja|id|object=*}}{{LSL Constants/Sensing/ja|type}}{{LSL_Function/ja
|func=llSensorRepeat
|func=llSensorRepeat|sort=SensorRepeat
|sort=SensorRepeat
|func_id=29|func_sleep=0.0|func_energy=10.0
|func_id=29|func_sleep=0.0|func_energy=10.0
|p1_type=string|p1_name=name
|p1_type=string|p1_name=name|p1_desc=オブジェクトまたはアバターの名前
|p2_type=key|p2_name=id
|p2_type=key|p2_name=id
|p3_type=integer|p3_name=type|p3_desc=型フラグ
|p3_type=integer|p3_name=type|p3_desc=マスク値 ({{#var:AGENT}} 、{{#var:ACTIVE}} 、{{#var:PASSIVE}} 、{{#var:SCRIPTED}} )|p3_hover=マスク値 (AGENT 、ACTIVE 、PASSIVE 、SCRIPTED)
|p4_type=float|p4_name=range
|p4_type=float|p4_name=range|p4_desc= 0.0 ~ 96.0 m
|p5_type=float|p5_name=arc
|p5_type=float|p5_name=arc|p5_desc=プリムのローカル X 軸と検出対象とするオブジェクトの間の最大角度。 0.0 から {{#var:PI}} の範囲|p5_hover=プリムのローカル X 軸と検出対象とするオブジェクトの間の最大角度。 0.0 から PI の範囲
|p6_type=float|p6_name=rate
|p6_type=float|p6_name=rate|p6_desc={{LSLG/ja|sensor}}/{{LSLG/ja|no_sensor}} がキューに入る頻度
|func_footnote='''name'''、'''id'''、そして(または)'''type'''が空あるいは0の場合、これらは無効化されます。'''id'''が無効なキーあるいは[[NULL_KEY/ja|NULL_KEY]]の場合、空として扱われます。<br/><br/>
|func_footnote='''name''' 、'''id''' '''type''' が空か 0 の場合、無視されます。<br/>'''id''' がキーとして正しくないか {{LSLG/ja|NULL_KEY}} の場合は、空として扱われます。
'''arc'''の素晴らしい説明は[http://www.lslwiki.net/lslwiki/wakka.php?wakka=llSensor llSensor]を見ましょう。.
 
|func_desc=前方ベクトルの'''arc'''ラジアンと'''range'''メートルで、'''name''''''id''''''type'''で一回スキャンを実行し、それを'''rate'''秒毎に繰り返します。
参照: [http://www.lslwiki.net/lslwiki/wakka.php?wakka=llSensor llSensor] '''arc''' の素晴らしい説明があります。
|func_desc='''name''' と '''id''' '''type''' を、 '''range''' メートル以内の前方ベクトル '''arc''' ラジアンでスキャンを 1 回行い、それを '''rate''' 秒ごとに繰り返します。 '''rate''' 秒経過した後に、最初のスキャンが行われます。
|return_text
|return_text
|spec
|spec
|caveats=*センサーイベントの繰り返しは、[[llGetRegionTimeDilation/ja|時間遅延]](ラグ)に逆らって成立します。
|caveats=*センサーイベントを繰り返すと、 {{LSLG/ja|llGetRegionTimeDilation|時間拡張}} (ラグ) に悪影響を与えます。
|constants={{LSL Constants Sensor/ja|type|型}}
*アタッチメントの中のセンサーはアバターの向いている方向を前方ベクトルとして使用します。マウスルックでは、アバターが見ている方向、マウスルックでない場合は、アバターが向いている方向ということになります。アバターの頭が向いている方向、アバターがアニメーションで向いている方向は入りません。アバターが前に歩く時に移動する方向となります。この場合、オブジェクトがどこに装着されていても関係ありません。
{{{!}} {{Prettytable}}
* 直近の {{LSLG/ja|sensor}} イベントのみがキューに入ります。以前のセンサーイベントは置きかえられます。
{{!}}- {{Hl2}}
* SIM の境界線近くで使用すると、{{LSLG/ja|llSensorRepeat}} はたまに数サイクルごとに指定した範囲以外のものを検出することがあります。 {{LSLG/ja|timer}} の中に置いた {{LSLG/ja|llSensor}} はそんなことはありません。
!Float定数
!円弧
{{!}}-
{{!}}[[PI_BY_TWO]]
{{!}}半球状
{{!}}-
{{!}}[[PI]]
{{!}}完全な球状
{{!}}}
|examples=
|examples=
<lsl>
<source lang="lsl2">// Written by Steamy Latte.
// Written by Steamy Latte.
// 30 秒ごとに 10 メートル以内の訪問者をスキャンします。
// Scans every 30 seconds for visitors within 10 meters.
// 新しい訪問者が範囲内に入ったら、オブジェクトのオーナーに通知します。
// Reports new visitors to object owner when she is in range.
 


string AllAgents;
string AllAgents;
Line 40: Line 31:
     state_entry()
     state_entry()
     {
     {
         // arc=PI is a sphere, you could look more narrowly in the direction object is facing with PI/2, PI/4 etc.
         // arc=PI は球形です。PI/2, PI/4 などで、オブジェクトの向いている方向にもっと範囲を狭めてもいいでしょう。
         // don't repeat this too often to avoid lag.
         // ラグを避ける為に、これはあまり頻繁に繰り返し実行しないようにしましょう。
         llSensorRepeat("", "", AGENT, 10.0, PI, 30.0);
         llSensorRepeat("", "", AGENT, 10.0, PI, 30.0);
     }
     }
Line 66: Line 57:
         }
         }
     }
     }
}
}</source>
</lsl>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llSensor/ja|llSensor]]|センサーを一度動かします}}
{{LSL DefineRow||{{LSLG/ja|llSensor}}| センサーを 1 回走らせます}}
{{LSL DefineRow||[[llSensorRemove/ja|llSensorRemove]]|llSensorRepeatのタイマーを停止します}}
{{LSL DefineRow||{{LSLG/ja|llSensorRemove}}|llSensorRepeat のタイマーを停止します}}
|also_events=
|also_events=
{{LSL DefineRow||[[sensor/ja|sensor]]|センサーが何かを探知したときに実行されます}}
{{LSL DefineRow||{{LSLG/ja|sensor}}|センサーが何かを探知したときに作動します}}
{{LSL DefineRow||[[no_sensor/ja|no_sensor]]|センサーが何も探知しないときに実行されます}}
{{LSL DefineRow||{{LSLG/ja|no_sensor}}|センサーが何も探知しない時に作動します}}
|also_articles
|also_articles
|notes=[http://rpgstats.com/wiki/index.php?title=Lag ラグのヒント]:多くの場合で、llSensorRepeatのよりリソースの少ない代案として[[llVolumeDetect/ja|llVolumeDetect]]を検討します。
|notes=[http://rpgstats.com/wiki/index.php?title=Lag Lag ヒント]: 多くのケースで、 llSensorRepeat よりも、リソース消費のより少ない {{LSLG/ja|llVolumeDetect}} を使うことを検討しましょう。
|permission
|negative_index
|cat1=Sensor
|cat1=Sensor
|cat2=Detected
|cat2=Detected

Latest revision as of 04:35, 25 February 2016

要約

関数: llSensorRepeat( string name, key id, integer type, float range, float arc, float rate );

nameidtype を、 range メートル以内の前方ベクトル arc ラジアンでスキャンを 1 回行い、それを rate 秒ごとに繰り返します。 rate 秒経過した後に、最初のスキャンが行われます。

• string name オブジェクトまたはアバターの名前
• key id アバター または オブジェクトUUID
• integer type マスク値 (AGENTACTIVEPASSIVESCRIPTED )
• float range 0.0 ~ 96.0 m
• float arc プリムのローカル X 軸と検出対象とするオブジェクトの間の最大角度。 0.0 から PI の範囲
• float rate sensor/no_sensor がキューに入る頻度

nameidtype が空か 0 の場合、無視されます。
id がキーとして正しくないか NULL_KEY の場合は、空として扱われます。

参照: llSensor arc の素晴らしい説明があります。

type マスクフラグ 説明 (llDetectedType()) 説明 (llSensor() と llSensorRepeat() のマスク)
AGENT 0x1 エージェント 廃止: AGENT_BY_LEGACY_NAME を使ってください。
AGENT_BY_LEGACY_NAME 0x1 エージェント Legacy Name(レガシー名)でエージェントを検索します。
AGENT_BY_USERNAME 0x10 エージェント Username(ユーザ名)でエージェントを検索します。
ACTIVE 0x2 物理タスク(物理オブジェクトとエージェント) 移動している物理オブジェクト、または動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費しているものを検索します。
PASSIVE 0x4 非物理オブジェクト 移動していない物理オブジェクト、または動作中でないスクリプトが入っている非物理オブジェクト、またはスクリプトの入っていないオブジェクトを検索します。つまり、現在 SecondLife サーバのリソースを消費していないものを検索します。
SCRIPTED 0x8 動作中のスクリプトが入っているオブジェクト 動作中のスクリプトが入っているオブジェクトを検索します。つまり、現在 SIM に何かしているものを検索します。
llDetectedType() スクリプトあり スクリプトなし
物理 10 (ACTIVE|SCRIPTED) 2 (ACTIVE)
非物理 12 (PASSIVE|SCRIPTED) 4 (PASSIVE)
Float 定数
PI_BY_TWO 半球スキャン
PI 球形スキャン

警告

  • スクリプトに sensor イベントがないと、 no_sensor が発生しません。 ~ SVC-2409
    • 空の sensor が条件を満たしているのに、 no_sensor が発生します。
  • センサーイベントを繰り返すと、 時間拡張 (ラグ) に悪影響を与えます。
  • アタッチメントの中のセンサーはアバターの向いている方向を前方ベクトルとして使用します。マウスルックでは、アバターが見ている方向、マウスルックでない場合は、アバターが向いている方向ということになります。アバターの頭が向いている方向、アバターがアニメーションで向いている方向は入りません。アバターが前に歩く時に移動する方向となります。この場合、オブジェクトがどこに装着されていても関係ありません。
  • 直近の sensor イベントのみがキューに入ります。以前のセンサーイベントは置きかえられます。
  • SIM の境界線近くで使用すると、llSensorRepeat はたまに数サイクルごとに指定した範囲以外のものを検出することがあります。 timer の中に置いた llSensor はそんなことはありません。

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   sensor がないと llSensorRepeatno_sensor を発生させません。

サンプル

// Written by Steamy Latte.
// 30 秒ごとに 10 メートル以内の訪問者をスキャンします。
// 新しい訪問者が範囲内に入ったら、オブジェクトのオーナーに通知します。


string AllAgents;
string OwnerName;

default
{
    state_entry()
    {
        // arc=PI は球形です。PI/2, PI/4 などで、オブジェクトの向いている方向にもっと範囲を狭めてもいいでしょう。
        // ラグを避ける為に、これはあまり頻繁に繰り返し実行しないようにしましょう。
        llSensorRepeat("", "", AGENT, 10.0, PI, 30.0);
    }
    sensor(integer num_detected)
    {
        string thisAgent = "";
        integer agentNum;
        for (agentNum=0; agentNum<num_detected; agentNum++)
        {
            key thisKey = llDetectedKey(agentNum);
            string thisAgent = llDetectedName(agentNum);
            if (thisKey == llGetOwner())
            {
                if (AllAgents != "")
                {
                    llOwnerSay("We've had the following visitors:" + AllAgents);
                    AllAgents = "";
                }
            }
            else if (llSubStringIndex(AllAgents+"\n", "\n"+thisAgent+"\n") < 0)
            {
                AllAgents = AllAgents + "\n" + thisAgent;
            }
        }
    }
}

注意点

Lag ヒント: 多くのケースで、 llSensorRepeat よりも、リソース消費のより少ない llVolumeDetect を使うことを検討しましょう。

関連項目

イベント

•  sensor センサーが何かを探知したときに作動します
•  no_sensor センサーが何も探知しない時に作動します

関数

•  llSensor センサーを 1 回走らせます
•  llSensorRemove llSensorRepeat のタイマーを停止します

記事

•  Object Type

特記事項

All Issues

~ Search JIRA for related Issues
   sensor がないと llSensorRepeatno_sensor を発生させません。
   llSensorRepeat randomly returns unexpected results if arc>PI

Signature

function void llSensorRepeat( string name, key id, integer type, float range, float arc, float rate );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。