LlGetAgentSize/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

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