2008年08月23日
ブラインドガラスのスクリプト><
こんにちは、よろしくお願いします。
ブラインド、プライバシーガラスのスクリプトについて質問です。
スイッチのようなオブジェクトを別に設置し、
オーナー及び指定のアバターのタッチで
全ガラスの外側のテクスチャだけを不可視にして外から見えないようにし、
内側からは外が見える状態のままにしたいのですが
どのようなスクリプトを組めばよいのでしょうか??
また、このような内容の商品があれば商品情報でもかまいません、、、><
色々探してるのですが、見つからず、スクリプトも触り程度しかわからなく困ってます、、、
よろしくお願いします、、、><
ブラインド、プライバシーガラスのスクリプトについて質問です。
スイッチのようなオブジェクトを別に設置し、
オーナー及び指定のアバターのタッチで
全ガラスの外側のテクスチャだけを不可視にして外から見えないようにし、
内側からは外が見える状態のままにしたいのですが
どのようなスクリプトを組めばよいのでしょうか??
また、このような内容の商品があれば商品情報でもかまいません、、、><
色々探してるのですが、見つからず、スクリプトも触り程度しかわからなく困ってます、、、
よろしくお願いします、、、><
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
今ブログにそんな感じのスクリプトの記事を執筆中なんですが、llSetAlphaを使うのでちょっと違うかもです
なので参考にならなかったらすみません^^;
テクスチャの透過度変更(llSetAlpha等)、または張替え(llSetTexture)、オフセット変更(llOffsetTexture)あたりを使えばで出来ると思いますよ。
窓とスイッチがリンクされていれば「llMessageLinked」で命令を送ることが出来ますが、もし離れた窓に命令を送るのなら「llListen」やそのほかの通信手段を使うことになると思います。
【例】テクスチャのオフセットを切り替える方法
※テクスチャは、「透過した状態の窓」と「不透明な状態の窓」の二つを横に繋いだ状態で作成します。(■□のような配置。□の方が透過)
※スイッチと窓は全てリンクしておいてください。
//窓にいれるスクリプト
integer tex_face = 1;//テクスチャを切り替えたい面の番号
default{
state_entry(){
llScaleTexture(0.5,1.0,tex_face);
llOffsetTexture(0.0,0.0,tex_face);
}
on_rez(integer onrez){
//とりあえずrezした時にリセットで初期状態に
llResetScript();
}
link_message(integer prim, integer num, string mes, key id){
//スイッチからの命令を判断
if(mes == "Reset"){
//スイッチがリセットしたら窓も一斉リセット
llResetScript();
}else if(num==0){
llOffsetTexture(0.5,0.0,tex_face);
}else{
llOffsetTexture(0.0,0.0,tex_face);
}
}
}
//スイッチにいれるスクリプト
integer onoff = 0;//不透過ON=1、OFF=0
default{
state_entry(){
//最初に全体をリセット
llMessageLinked(LINK_SET,0,"Reset","");
}
on_rez(integer onrez){
llResetScript();
}
touch_start(integer touched){
//利用をオーナー限定にしない場合、ここから削除
if(llDetectedKey(0)!=llGetOwner())){
return;
}
//利用をオーナー限定にしない場合、ここまで削除
//窓に命令を発信
llMessageLinked(LINK_SET,onoff,"","");
if(onoff==0){
onoff = 1;
}else{
onoff = 0;
}
}
}
単純な構造ですとこんな感じでしょうか・・・もっと効率の良い方法がありましたらどなたか補足をお願いいたします。
いますぐにテストできませんでしたので、実働するかチェックは行っていません。テクスチャのずれや伸びがおかしかったら、llOffsetTexture(0.5,0.0,tex_face);のあたりの数値を調整してみてください。
透過度を変える場合は、「llOffsetTexture」の部分をそれぞれ「llSetLinkAlpha」の形式に置き換えていけばOKです。(Alphaの場合は括弧内の値も関数に合わせて変更してください)
リンクできない距離にある窓を調整する場合は、llMessageLinkedが使えませんので、上記以外の方法を使うことになると思います。
わざわざスクリプト仕込む必要はないでのわないかと…
>スイッチのようなオブジェクトを別に設置し、
>オーナー及び指定のアバターのタッチで
ですからスクリプトは必要ですよ。
で、この場合は、llSetAlphaを使うのが一番簡単だと思います。わざわざテクスチャを作り直す必要はたぶんないです。