LlLinkSitTarget/ja

From Second Life Wiki
Jump to: navigation, search

要約

関数: llLinkSitTarget( integer link, vector offset, rotation rot );

リンクされたプリムの着座ポイントを設定します。着座位置はプリムの位置や回転に相対するものです。

• integer link リンク 番号 (0: リンクなし, 1: ルートプリム, >1: 子プリム) または LINK_* フラグ
• vector offset プリムのローカル座標での、追加する着座ポイントの位置。
• rotation rot プリムの回転に対する、追加する着座ポイントの回転。

If offset == <0.0, 0.0, 0.0> の場合、着座ポイントは削除されます。

仕様

llLinkSitTarget はエージェントターゲット (Advanced -> Character -> View Agent Target) の位置を設定します。このターゲットの位置は rotoffset に基づいています[1]

フラグ 説明
LINK_ROOT 1 リンクセットの中のルートプリムに送ります
フラグ 説明
LINK_THIS -4 スクリプトの入った自プリムに送ります

警告

  • link は実際に存在する リンク番号 か、LINK_ROOTLINK_THIS のような、単体プリムでも同じように扱えるリンク定数である必要があります。
  • いったん着座ポイントが除去されると、 llAvatarOnSitTarget は常に NULL_KEY を返すようになります。
  • 着座ポイントを設定したスクリプトを削除したり停止したりしても、プリムの着座ポイントは削除されません。
    • 着座ポイントはプリムのプロパティであり、スクリプトが存在しつづけなければならないものではありません。
  • 着座ポイントを削除するには、次のようにします:

<lsl>llSitTarget(ZERO_VECTOR,ZERO_ROTATION);</lsl>

  • パイメニューから「ここに座る」オプションを除去する方法はありません。llSetSitText に " " 空白や、その他見えない文字を llSetSitText に設定すると、削除されたように見えることになります。
  • アタッチメントの上に座ることはできません。(この点に投票するならSVC-6100を観てください)
  • rot は着座ポイントの位置に不条理に影響します[2]rotバグを修正するには、rotがゼロの場合、着座位置から<0,0,0.4>を引いてください。例はllSitTargetを観てください。
    • llSetLinkPrimitiveParams が、手っ取り早い回避策です。
    • アニメーションはエージェントターゲットに相対するものですが、エージェントターゲットはアニメーションで表されるものではありません。
  • llSitTarget は既に座っているアバターの位置を更新しません。着座ポイントを更新 で、この問題を回避できます。
  • offset は各軸について 300.0 メートルまでに制限されています。 x, y, z 座標は [-300, 300.0] の範囲になければなりません[2]
    • 範囲外の場合、最も近い制限値に丸められます。
  • オブジェクトに多数の座席(座席にそれぞれllSitTargetで着座位置を設定するスクリプトがあるか、リンクセットにいくつかのllLinkSitTargetsを割り当てるスクリプトがある)がある場合、アバターの着座位置を最終的に以下の方法で決定します:
    • クリックしたプリムに着座位置が指定してあり、かつ満席でない場合はその着座位置を使います。
    • クリックしたプリムに着座位置が指定してなく、他に着座位置が指定してあり、満席でないリンクされたプリムがある場合は、最も小さいリンク番号の着座位置が使われます。
All Issues ~ Search JIRA for related Bugs

サンプル

注意点

リンク番号

オブジェクトを構成するそれぞれのプリムにはアドレスがあります。それがリンク番号です。オブジェクトの特定のプリムにアクセスするには、そのプリムのリンク番号を知らなければなりません。リンク番号はプリムに振られますが、オブジェクトに座っているアバターにも振られます。

  • オブジェクトが単一のプリムで構成されていて、アバターが座っていないとき、(ルート)プリムのリンク番号は 0 です。
  • しかし、オブジェクトが複数のプリムで構成されていたり、オブジェクトに座っているアバターがいたりすると、ルートプリムのリンク番号は 1 となります。

アバターがオブジェクトに座ると、リンクセットの末尾に追加され、いちばん大きなリンク番号が振られることになります。さらに、アバターがオブジェクトに座っている場合、アバターを立たせないと、プリムのリンク・リンク解除ができません。

プリムやアバターの数え方

オブジェクトのプリムや、プリムに座っているアバターの数を調べるのに、2つの関数があります。

  • llGetNumberOfPrims() - プリムと座っているアバターの数を返します。
  • llGetObjectPrimCount(llGetKey()) - オブジェクトのプリムの数だけを返しますが、アタッチメントとなっている場合は 0 を返します。
integer GetPrimCount() { //常にプリムの数だけを返します。
    if(llGetAttached())//装着されているか?
        return llGetNumberOfPrims();//アバターとプリムの数を返しますが、アタッチメントの上には座れないのでこれでいいです。
    return llGetObjectPrimCount(llGetKey());//プリムの数だけを返しますが、アタッチメントの場合ここは通りません。
}

関連項目

イベント

•  changed

関数

•  llGetLinkNumber スクリプトが入っているプリムのリンク番号を取得します。
•  llSitTarget
•  llSetSitText
•  llAvatarOnSitTarget
•  llAvatarOnLinkSitTarget
•  llUnSit

特記事項

経緯

  • Scheduled for RC Magnum channel, week of August 3, 2011.
Search JIRA for related Issues

脚注

  1. ^ rot は位置に影響してはいけないはずと多くの人が考えていますが、残念なことに着座ポイントの実装は 溶岩流 (lava-flow) です。 ~ SVC-2277
  2. ^ 記事中の範囲は、 実数空間 に記載されているものです。

Signature

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