Site search

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

2008年7月11日金曜日

アバターレーダーのスクリプト

今回はタッチで周囲のアバターをキャッチして表示する簡単なレーダーのスクリプトです。HUDに組み込んで使ってくださいねー^^


センサーは50mにしてますが、多分100mぐらいが限度じゃないかなと思います。あと、SIMの境界を越えたらキャッチできません。
それから、HUDとして装着すると自分自身はキャッチしません^^

// アバターレーダー
float range=50;  // センサーの半径

default
{
    touch_start(integer total_number)
    {  // オーナーがタッチするとスキャン実行
        if (llDetectedKey(0) == llGetOwner())
            llSensor("", NULL_KEY, AGENT, range, PI);
    }

    sensor(integer numberDetected)
    {  // センサーに反応があったとき
        vector pos;
        vector v;
        float f;
        string name;
        integer i;
        integer j=numberDetected;  // キャッチしたアバターの数
        llOwnerSay("Detected "+(string)j+" avatar(s) in "+(string)((integer)range)+"m.");
        for (i=0; i < j; i++) {  // アバターの数だけ実行
            pos=llDetectedPos(i);  // アバターの位置
            v=llGetPos()-pos;  // 自分の位置との差
            f=llSqrt(llPow(llSqrt(llPow(v.x,2)+llPow(v.y,2)),2)+llPow(v.z,2));  // 距離
            name=llDetectedName(i);  // アバターの名前
            llOwnerSay(name+" "+(string)pos+" "+(string)f+"m away.");
        }
    }

    no_sensor()
    {  // センサーに反応がなかったとき
        llOwnerSay( "No detected avatar in "+(string)((integer)range)+"m." );
    }
}

10月25日追記: センサーの範囲は最大96mでした。それから、2点間の距離を求めるのにややこしい計算してるんですけど、最近llVecDistっていう関数のあるのに気がつきました^^;

0 件のコメント:

コメントを投稿