タイマーで一定時間毎にテクスチャを張り替えたらいいんですが、ただ順に表示するだけだったら簡単すぎるのでフェードイン、フェードアウトするようにしてみました。まあ、ありがちですけどね^^;
// スライドショー
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 件のコメント:
コメントを投稿