Difference between revisions of "LlGetAgentSize/ja"

From Second Life Wiki
Jump to navigation Jump to search
(カテゴリ変更)
 
(2 intermediate revisions by one other user not shown)
Line 2: Line 2:
|func_id=218|func_sleep=0.0|func_energy=10.0
|func_id=218|func_sleep=0.0|func_energy=10.0
|func=llGetAgentSize|return_type=vector|p1_type=key|p1_name=id
|func=llGetAgentSize|return_type=vector|p1_type=key|p1_name=id
|func_footnote=エージェント'''id'''は要求するオブジェクトと同じリージョンでなければならず、居ない場合は{{LSL Const/ja|ZERO_VECTOR|vector|{{LSL VR|0.0|0.0|0.0}}}}が返されます。
|func_footnote='''id''' が地域にいない場合や、アバターでない場合、{{LSL Const/ja|ZERO_VECTOR|vector|{{LSL VR|0.0|0.0|0.0}}}} が返ります。
|func_desc
|func_desc
|return_text=要求された'''id'''のアバタの大きさ
|return_text='''id''' で指定されたアバターの推定サイズ
|spec
|spec
|caveats
|caveats=* 返却されたベクトルはアバターの靴を含めた現在のシェイプをもとに計算された推測値です。x は定数 0.45{{Footnote|1={{SourceLink|indra/llcommon/indra_constants.h|text=const F32 DEFAULT_AGENT_DEPTH = 0.45f;|line=93}}|2=const F32 DEFAULT_AGENT_DEPTH = 0.45f;}} で、y は定数 0.60{{Footnote|1={{SourceLink|indra/llcommon/indra_constants.h|text=const F32 DEFAULT_AGENT_WIDTH = 0.60f;|line=97}}|2=const F32 DEFAULT_AGENT_WIDTH = 0.60f;}}、z はある一定の分だけレンダリングされた高さより小さくなります。0.17 足すと頭のてっぺんから足底までの高さに、0.195 足すと頭のてっぺんから地面までの高さになります (立っているアバターは微妙に床や地面より上に描かれます) 。{{Footnote|2=llGetAgentSize は LLVOAvatar::computeBodySize() と同じ値を返します。 llcommon/indra_constants.h で初期値と限界値を見てください。|1=llGetAgentSize は {{SourceLink|indra/newview/llvoavatar.cpp|text=LLVOAvatar::computeBodySize()|line=2312}} と同じ値を返します。 {{SourceLink|indra/llcommon/indra_constants.h|text=indra/llcommon/indra_constants.h|line=91}} で初期値と限界値を見てください。}}
|constants
*返却された値は同じ幅と奥行ですが、立った時に、アバターの {{LSLG/ja|llGetBoundingBox|Bounding Box}} として報告された値から 0.05 メートル短くなります。アバターの Bounding Box はアバターが座ると変更されますが、llGetAgentSize はシェイプが変更されない限り不変です。
|constants0
|examples=
|examples=
<lsl>
<source lang="lsl2">//オーナーの頭の上に箱を浮かせるスクリプトです。
//A simple script that makes a box hover above the owner's head.
default {
default {
     state_entry() {
     state_entry() {
Line 16: Line 16:
         vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POS]),0);
         vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POS]),0);
         vector agent = llGetAgentSize(owner);
         vector agent = llGetAgentSize(owner);
         pos.z += 0.5 + agent.z / 2;//"pos" needs to be adjusted so it appears above the owner.
         pos.z += 0.5 + agent.z / 2;// オーナーの上に表示されるように "pos" を調節する必要があります
         if(agent)//makes sure it found the owner, a zero vector evaluates as false
         if(agent)//オーナーを見つけることができたか確認します。ゼロベクトルの場合 false となります
             llSetPos(pos);
             llSetPos(pos);
     }
     }
     touch_start(integer num)
     touch_start(integer num) {
    {
         llResetScript();
         llResetScript();
     }
     }
}
}</source>
</lsl>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llGetObjectDetails/ja|llGetObjectDetails]]|}}
{{LSL DefineRow||{{LSLG/ja|llGetObjectDetails}}|}}
{{LSL DefineRow||[[llGetBoundingBox/ja|llGetBoundingBox]]|}}
{{LSL DefineRow||{{LSLG/ja|llGetBoundingBox}}|}}
{{LSL DefineRow||[[llGetAgentInfo/ja|llGetAgentInfo]]|}}
{{LSL DefineRow||{{LSLG/ja|llGetAgentInfo}}|}}
{{LSL DefineRow||[[llRequestAgentData/ja|llRequestAgentData]]|}}
{{LSL DefineRow||{{LSLG/ja|llRequestAgentData}}|}}
|also_events
|also_events
|also_tests
|also_tests
|also_articles
|also_articles
|notes=これはアバターが同じリージョンにいるかどうかのテストとして優れた方法です。
|notes=
|permission
* この関数は次のことを手早く調べるのにいい方法です...
|negative_index
** アバターが同じ地域にいるか
** 既に地域にあると分かっている UUID がアバターをさすものか
 
この関数を使っていずれかのケースを調べるのには、次のようにします。
<source lang="lsl2">if(llGetAgentSize(uuid)) {
    //uuid は地域にいるアバターです
} else {
    //uuid は地域にいるアバターではありません
}</source>
 
|cat1
|cat1
|cat2=Avatar/ja
|cat2=Avatar
|cat3
|cat3
|cat4
|cat4
}}
}}

Latest revision as of 06:03, 25 February 2016

要約

関数: vector llGetAgentSize( key id );

id で指定されたアバターの推定サイズを vector で返します。

• key id 同一 地域 にいるアバターの UUID

id が地域にいない場合や、アバターでない場合、ZERO_VECTOR が返ります。

警告

  • 返却されたベクトルはアバターの靴を含めた現在のシェイプをもとに計算された推測値です。x は定数 0.45[1] で、y は定数 0.60[2]、z はある一定の分だけレンダリングされた高さより小さくなります。0.17 足すと頭のてっぺんから足底までの高さに、0.195 足すと頭のてっぺんから地面までの高さになります (立っているアバターは微妙に床や地面より上に描かれます) 。[3]
  • 返却された値は同じ幅と奥行ですが、立った時に、アバターの Bounding Box として報告された値から 0.05 メートル短くなります。アバターの Bounding Box はアバターが座ると変更されますが、llGetAgentSize はシェイプが変更されない限り不変です。
All Issues ~ Search JIRA for related Bugs

サンプル

//オーナーの頭の上に箱を浮かせるスクリプトです。
default {
    state_entry() {
        key owner = llGetOwner();
        vector pos = llList2Vector(llGetObjectDetails(owner, [OBJECT_POS]),0);
        vector agent = llGetAgentSize(owner);
        pos.z += 0.5 + agent.z / 2;// オーナーの上に表示されるように "pos" を調節する必要があります
        if(agent)//オーナーを見つけることができたか確認します。ゼロベクトルの場合 false となります
            llSetPos(pos);
    }
    touch_start(integer num) {
        llResetScript();
    }
}

注意点

  • この関数は次のことを手早く調べるのにいい方法です...
    • アバターが同じ地域にいるか
    • 既に地域にあると分かっている UUID がアバターをさすものか

この関数を使っていずれかのケースを調べるのには、次のようにします。

if(llGetAgentSize(uuid)) {
    //uuid は地域にいるアバターです
} else {
    //uuid は地域にいるアバターではありません
}

関連項目

特記事項

Search JIRA for related Issues

脚注

  1. ^ const F32 DEFAULT_AGENT_DEPTH = 0.45f;
  2. ^ const F32 DEFAULT_AGENT_WIDTH = 0.60f;
  3. ^ llGetAgentSize は LLVOAvatar::computeBodySize() と同じ値を返します。 indra/llcommon/indra_constants.h で初期値と限界値を見てください。

Signature

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