タイピングしている時に表示され、普段は消えるノートパソコン(llGetAgentInfo)
前にこのページでご紹介したスクリプトより簡単な方法があったので内容を変更しました。
ノートパソコンをつくりました。
これは画面とキーボードとそれぞれを張ってある板で4プリムをリンク(結合)させてでできています。
このノートパソコンを装着していると、タイピングしている時は表示され、
何もしていないときは消えます。
下記スクリプトをマスタープリム(ルートプリム)に書きます。
default {
state_entry(){ llSetTimerEvent(0.1); } timer(){ float num = 1.0; if (llGetAgentInfo(llGetOwner()) & AGENT_TYPING ){ num = 1.0; llSetAlpha(num,ALL_SIDES); llSetLinkAlpha(2,num,ALL_SIDES); llSetLinkAlpha(3,num,ALL_SIDES); llSetLinkAlpha(4,num,ALL_SIDES); }else{ num = 0.0; llSetAlpha(num,ALL_SIDES); llSetLinkAlpha(2,num,ALL_SIDES); llSetLinkAlpha(3,num,ALL_SIDES); llSetLinkAlpha(4,num,ALL_SIDES); } } } |
llGetAgentInfo関数(アバターの状態を取得します。)
一番目のパラメータ : 情報を取得するアバターのID (参考)取得できる状態 AGENT_ALWAYS_RUN:常に走るになっている AGENT_ATTACHMENTS:アタッチしている AGENT_AWAY:退席中 AGENT_BUSY:BUSY AGENT_CROUCHING:屈んでいる AGENT_FLYING:飛んでいる AGENT_IN_AIR:空中にいる AGENT_MOUSELOOK:マウスルック AGENT_ON_OBJECT:オブジェクトに座っている AGENT_SCRIPTED:スクリプトを実行している AGENT_SITTING:地面に座っている AGENT_TYPING:タイピングしている AGENT_WALKING:歩いている |
llSetAlpha関数(ルートプリムの透明度を設定します。)
一番目のパラメータ : 透明度(1.0は表示され、0.0は透明になります。) 二番目のパラメータ : 透明にする面番号 |
llSetLinkAlpha関数(リンクされた子プリムの透明度を設定します。)
一番目のパラメータ : リンク番号(ルートプリムが1番で、子プリムは2番以降の番号がつきます。) 二番目のパラメータ : 透明度(1.0は表示され、0.0は透明になります。) 三番目のパラメータ : 透明にする面番号 |
(参考)リンク(結合)した場合、最後に選択したプリムがルートプリムとなります。
スクリプトを記述するとき、通常はルートプリムが自動的に選択されるのでそのまま利用できると思います。
llSetTimerEvent関数とtimerイベントについては、こちらのページを参考にしてください。タイマーイベント
ライブラリのテクスチャを使ったので4プリム構成になっていますが、ノートパソコンのテクスチャがあれば1プリムで作れたなぁと思います。
もっとシンプルに(改良版)
llSetLinkAlphaの第一パラメータにLINK_SETを指定すると、
リンクされている全てのプリムの透明度を変更することができ、もっと簡単に実現できました。
default {
state_entry(){ llSetTimerEvent(0.1); } timer(){ if (llGetAgentInfo(llGetOwner()) & AGENT_TYPING ){ llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES); }else{ llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES); } } } |
この改良版は読者の方に教えていただきました!貴重なアドバイス、ありがとうございました!!!
改良前のものも、llSetAlpha関数のサンプルになるので残してありますが、
短くて、わかりやすいサンプル集にしていきたいと思いますので、今後ともどうぞよろしくお願いします。