2008年08月23日

ブラインドガラスのスクリプト><

こんにちは、よろしくお願いします。

ブラインド、プライバシーガラスのスクリプトについて質問です。
スイッチのようなオブジェクトを別に設置し、
オーナー及び指定のアバターのタッチで
全ガラスの外側のテクスチャだけを不可視にして外から見えないようにし、
内側からは外が見える状態のままにしたいのですが
どのようなスクリプトを組めばよいのでしょうか??

また、このような内容の商品があれば商品情報でもかまいません、、、><
色々探してるのですが、見つからず、スクリプトも触り程度しかわからなく困ってます、、、
よろしくお願いします、、、><


同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by Cream  at 20:51 │Comments(4)スクリプト関連

この記事へのコメント
こんにちは。
今ブログにそんな感じのスクリプトの記事を執筆中なんですが、llSetAlphaを使うのでちょっと違うかもです
なので参考にならなかったらすみません^^;
Posted by 千尋千尋 at 2008年08月24日 00:44
こんにちは。
テクスチャの透過度変更(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が使えませんので、上記以外の方法を使うことになると思います。
Posted by natsu at 2008年08月24日 02:05
内側だけ、透明なテクス貼ればいいんでわないとかと…

わざわざスクリプト仕込む必要はないでのわないかと…
Posted by 通りすがり at 2008年08月25日 09:57
通りすがりさん

>スイッチのようなオブジェクトを別に設置し、
>オーナー及び指定のアバターのタッチで

ですからスクリプトは必要ですよ。

で、この場合は、llSetAlphaを使うのが一番簡単だと思います。わざわざテクスチャを作り直す必要はたぶんないです。
Posted by YooYoo at 2008年08月25日 18:35
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。