Site search

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

2008年9月7日日曜日

暗くなると自動点灯するランプのスクリプト

今回は太陽が沈んで暗くなったら自動で点くランプのスクリプトです^^
今回もとても簡単なスクリプトなので、ホントはもうひと工夫ほしいところなんですけどw でもまあ、わかりやすくていいかなって思います^^;

llGetSunDirectionで太陽の方向を調べられるんですね。関数の戻り値がベクターなので、このZの値が0以上だったら太陽が昇ってるって感じですね。

ベクター型変数(ベクトル型)で v を定義したらZの値は v.z で扱えます。
vector v;
v=<v.x, v.y, v.z>;

なので
vector v=<1.0, 2.1, 3.4>;
だったら v.z=3.4 ですね


タイマーで一定時間ごとに太陽の高さを調べて、地平線より下だったらランプを点灯させます。
ランプはllSetPrimitiveParamsでグローとライトを使いました。
// 暗くなると自動点灯するランプ
default
{
    state_entry()
    {
        llSetTimerEvent(30);  // タイマー30秒ごと
    }

    timer()
    {
        vector v=llGetSunDirection();  // 太陽の方向
        if (v.z < 0) {  // 太陽が沈んでたら
            llSetPrimitiveParams([
                PRIM_GLOW,ALL_SIDES,0.2,  // グロー0.2
                PRIM_POINT_LIGHT,TRUE,<1,1,1>,1.0,10.0,0.75]);  // ライト点ける
        }
        else {  // そうじゃないとき
            llSetPrimitiveParams([
                PRIM_GLOW,ALL_SIDES,0.0,  // グローなし
                PRIM_POINT_LIGHT,FALSE,<0,0,0>,0,0,0]);  // ライト消す
        }
    }
}

でも太陽の方向って、ビューワーを自分好みで昼や夜に変えても変わらないんですよねw

0 件のコメント:

コメントを投稿