LlGetAgentSize/ja

From Second Life Wiki
Jump to: navigation, 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

サンプル

//オーナーの頭の上に箱を浮かせるスクリプトです。
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;(please use SourceLink/bitbucket instead, SourceLink is deprecated)
  2. ^ const F32 DEFAULT_AGENT_WIDTH = 0.60f;(please use SourceLink/bitbucket instead, SourceLink is deprecated)
  3. ^ llGetAgentSize は LLVOAvatar::computeBodySize()(please use SourceLink/bitbucket instead, SourceLink is deprecated) と同じ値を返します。 indra/llcommon/indra_constants.h(please use SourceLink/bitbucket instead, SourceLink is deprecated) で初期値と限界値を見てください。

Signature

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