2009年10月31日土曜日

スライドショーのスクリプト

今回はコンテンツに入ってるテクスチャを順に表示する、スライドショーって感じのスクリプトです^^

タイマーで一定時間毎にテクスチャを張り替えたらいいんですが、ただ順に表示するだけだったら簡単すぎるのでフェードイン、フェードアウトするようにしてみました。まあ、ありがちですけどね^^;

// スライドショー
float time=10;  // 表示時間(秒)
float val=0;  // 加減値用
integer int=0;  // カウンタ
integer dir=1;  // 符号設定用

default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー始動
    }

    timer()
    {
        llSetTimerEvent(0.1);  // タイマー0.1秒
        if (val > 1) {  // valが1を超えたら
            dir=-1;  // 符号をマイナス
            llSetTimerEvent(time);  // タイマーを調整して一定時間表示させる
        }
        else if (val < 0) {  // valがマイナスになったら
            dir=1;  // 符号をプラス
            integer i=llGetInventoryNumber(INVENTORY_TEXTURE);  // コンテンツ内のテクスチャ数
            int++;  // カウンタを進める
            if (int >= i) int=0;  // カウンタがテクスチャ数を超えたら0にする
            string texture=llGetInventoryName(INVENTORY_TEXTURE,int);  // カウンタからテクスチャ名取得
            if (texture) llSetTexture(texture,0);  // 面番号0にテクスチャ表示
        }
        val+=0.05*dir;  // 加減する値を計算
        llSetColor(<val,val,val>,0);  // 面番号0の色を設定
    }
}

フェードイン、フェードアウトは色を白から黒く変化させています。色設定の代わりにllScaleTextureを使うとズームイン、ズームアウトする感じにできますが、この関数は0.2秒遅滞があるので、あまりスムーズにならないですね。

0 件のコメント:

コメントを投稿