Site search
2008年8月24日日曜日
透明度を変更するスクリプト
今回はメガネ(サングラス)や窓ガラスなどの透明度を変更するスクリプトです^^
llSetAlphaを使います。値が0で透明になるので「不透明度」というほうがいいんですかね?www
まずタッチで切り替えの簡単なスクリプトです。値は透明のとき0.2にしました^^
でも実際はリンクして使うので、スクリプトも親プリムからメッセージを送って変更するようにしないと眼鏡レンズなどに使えないですねw
子プリムに送信するメッセージを alpha0.2 のようにして、こんな感じになりました^^
透明・不透明をタッチで切り替えるだけにしてますが、ダイアログを使うようにすれば何段階に変更とかできますね^^
llSetAlphaを使います。値が0で透明になるので「不透明度」というほうがいいんですかね?www
まずタッチで切り替えの簡単なスクリプトです。値は透明のとき0.2にしました^^
// 透明・不透明切り替え
float alpha=1.0; // 不透明度
default
{
touch_start(integer total_number)
{
if (llDetectedKey(0) == llGetOwner())
{ // オーナーがタッチしたら
if (alpha < 0.5) alpha=1.0; // alphaが0.5以下なら1.0に
else alpha=0.2; // そうでないときは0.2に
llSetAlpha(alpha,ALL_SIDES); // アルファを設定
}
}
}
でも実際はリンクして使うので、スクリプトも親プリムからメッセージを送って変更するようにしないと眼鏡レンズなどに使えないですねw
子プリムに送信するメッセージを alpha0.2 のようにして、こんな感じになりました^^
// 親プリムのスクリプト
float alpha=1.0; // 不透明度
default
{
touch_start(integer total_number)
{
if (llDetectedKey(0) == llGetOwner())
{ // オーナーがタッチしたら
if (alpha < 0.5) alpha=1.0; // alphaが0.5以下なら1.0に
else alpha=0.2; // そうでないときは0.2に
// リンクした子プリムにメッセージ送る
llMessageLinked(LINK_ALL_CHILDREN,0,"alpha"+(string)alpha,"");
}
}
}
// 透明にする子プリムのスクリプト
default
{
link_message(integer sender_num, integer num, string msg, key id)
{
if (llGetSubString(msg,0,4) == "alpha")
{ // alphaのメッセージ受信すると
float alpha=(float)llGetSubString(msg,5,-1); // 数値を得る
llSetAlpha(alpha,ALL_SIDES); // アルファを設定
}
}
}
透明・不透明をタッチで切り替えるだけにしてますが、ダイアログを使うようにすれば何段階に変更とかできますね^^
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿