Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2008年11月12日水曜日

身長を測るスクリプト

今回はタッチしたアバターの身長を測るスクリプトです。
アバターのサイズを調べる関数はllGetAgentSizeですね。

default
{
    touch_start(integer total_number)
    {
        key agent=llDetectedKey(0);  // タッチしたアバターのキー
        vector size=llGetAgentSize(agent);  // アバターのサイズ
        llSay(0,(string)size.z);  // Z方向のサイズをチャットで表示
    }
}

こんな感じで簡単に出せます^^

でもこれだけだと、ここで記事が終わっちゃうのでw プリムが計測した身長と同じ高さになるスクリプトを書いてみました。


ただ実際に高さを比べてみたらアバターのほうが高いんですよね。靴かなって思ったんですけど、靴脱いでもやっぱり高いみたいです?_?
// タッチしたアバターの身長と同じ高さになるプリム
default
{
    touch_start(integer total_number)
    {
        key agent=llDetectedKey(0);  // タッチしたアバターのキー
        string name=llDetectedName(0);  // アバターの名前
        vector size=llGetAgentSize(agent);  // アバターのサイズ
        if (size != ZERO_VECTOR) {  // サイズが0でなかったら
            integer i=(integer)llRound(size.z*100);  // Zのサイズ(身長)をcmに換算
            llSay(0,name +" is "+(string)i+"cm tall.");  // チャットで表示
            vector pos=llGetPos();  // プリムの位置
            vector scale=llGetScale();  // プリムのサイズ
            pos.z+=(size.z-scale.z)/2;  // サイズ変更後のプリムの位置を計算
            llSetPrimitiveParams([PRIM_SIZE,size, PRIM_POSITION,pos]);  // プリムのサイズと位置変更
        }
    }
}

2 件のコメント:

  1. こんちは
    llGetAgentSize で得られる身長は、腰の高さ(Pelvis)から
    足の位置(Left Foot 、Right Foot)までの長さの2倍らしいです。
    以前どこかでちら見した情報なので、間違ってたらごめんなさい。

    返信削除
  2. こんにちは。
    ってことは、実際の高さが合わなくてOKってことなんですねw
    どこか間違えてて、自分だけ正確に測れてないのかも。。。っていう不安が解消できただけでも収穫です。情報ありがとうございました^^

    返信削除