Difference between revisions of "LlGetAgentSize/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 849072 by Mako Nozaki (Talk))
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>
<lsl>//オーナーの頭の上に箱を浮かせるスクリプトです。
//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();
     }
     }
}
}</lsl>
</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 がアバターをさすものか
 
この関数を使っていずれかのケースを調べるのには、次のようにします。
<lsl>if(llGetAgentSize(uuid)) {
    //uuid は地域にいるアバターです
} else {
    //uuid は地域にいるアバターではありません
}</lsl>
 
|cat1
|cat1
|cat2=Avatar
|cat2=Avatar

Revision as of 03:39, 3 May 2010

要約

関数: 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

サンプル

<lsl>//オーナーの頭の上に箱を浮かせるスクリプトです。 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();
   }
}</lsl>

注意点

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

この関数を使っていずれかのケースを調べるのには、次のようにします。 <lsl>if(llGetAgentSize(uuid)) {

   //uuid は地域にいるアバターです

} else {

   //uuid は地域にいるアバターではありません

}</lsl>

関連項目

特記事項

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の関連した項目が参考になるかもしれません。