Site search

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

2009年7月2日木曜日

風速計のスクリプト

今回は風速計(風力計?)って感じのスクリプトです。矢の部分が風上を向いて、下の風車の部分がクルクル回ります。。。まあ簡単なスクリプトなんですが^^;

風見鶏みたいに風の方向を向くオブジェクトと、風車みたいに風速に応じて回転するオブジェクトの2つで構成しました。

どちらも回転して向きが変わったとき位置がずれないように、オブジェクトのX,Y方向の重心がポールの中心に来るように作ってくださいね。


風の方角を向く矢の部分です。風向きって結構変化が激しいのでタイマー間隔短めにしてあります。
// 風上を向く
default
{
    state_entry()
    {
        llSetTimerEvent(0.05);  // タイマー設定
    }

    timer()
    {
        vector v=llWind(ZERO_VECTOR);  // 風の向き、速さ
        float f=llAtan2(-v.y,-v.x);  // 風上の方角を計算
        llSetRot(llEuler2Rot(<0,0,f>));  // オブジェクトを風上に向ける
        llSetText((string)llVecMag(v)+"m/sec",<0,1,1>,1);  // 風速をフローティングテキストで表示
    }
}

続いて風車の部分です。
// 風力に応じて回転
default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー設定
    }

    timer()
    {
        float f=llVecMag(llWind(ZERO_VECTOR));  // 風速
        llTargetOmega(<0,0,f>,PI,1);
    }
}

0 件のコメント:

コメントを投稿