ソラマメブログ
< 2024年04月 >
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
Mail

2007年05月06日

ダブルクリックを取得(1)

doubleClick links
ダブルクリックを取得(1)

SL内ではタイムラグがあるので実用的に使えるのかどうか怪しい部分がありますが、
ダブルクリック…いや、ダブルtouchを判定するモジュール、DoubleClickModuleを作りました。

ダブルクリックを取得(1)
なぜかサンプルのプリムの見た目はマウスです。
今回もテクスチャパーティクル(しつこい)で作っています。
…単に手を抜いただけなんですけど。

モジュールの使用例として、プリムをダブルクリックすると
このマウスが跳ねあがるサンプルscriptを作りました。
では、動画で確認どうぞ。

映像見ても良くわからないですが;
1回目のダブルクリックはクリックが遅いのでダブルクリックと判定されず
2回目の早めのダブルクリックがダブルクリックと判定されています。
この辺りの感度は調整可能です。

ダブルクリックを取得(1)
さて、このプリムには4つのscriptが貼り付けられています。
4つも!という感じかもしれませんが、
StableParticleMpduleMakeViewはオマケなので、Doubleクリックとは関係なく、
また、今回作ったDoubleClickModuleは、貼り付けるだけでいじらなくて良いので、
実際にモジュールを使用する際に書くことになるのは
Mainという名前にされているscriptだけです。
(実際の名前は何でもかまいません)

そのMain(使用サンプルscript)はこうなっています。
ダブルクリックされたらマウスが跳ねて音を出す、それだけです。
◆main script
integer debug = TRUE;
Trace(string s){
if(debug) llOwnerSay(s);
}
OnDoubleClick(){
llPlaySound("3581b84f-3e01-c107-e887-66da94dff9a1",1.0);//サウンドをUUIDで鳴らす
vector pos = llGetLocalPos();
llSetPos(pos+<0,0,0.1>);
llSleep(0.25);
llSetPos(pos);
}
default{
state_entry(){
}
link_message(integer sender,integer num,string s,key id){
Trace("link_message sender:"+(string)sender+" num:"+(string)num+" str:"+s+" key:"+(string)id);
if(s=="harayoki.event.doubleClick"){
OnDoubleClick();
}
}
}


プリムがダブルクリックされるとlink_messageイベントが呼び出され、
三番目のstring型引数に"harayoki.event.doubleClick"が渡されます。
判別してダブルクリック時の動作を記述してください。

link_messageイベントにはダブルクリックされたプリムのリンク番号(integer sender)と、
ダブルクリックしたアバタのID(key id)が渡されるので
そちらも利用してもらえればと思います。


マウスの絵(テクスチャパーティクル)を作成する余計なソースのコードは以下になります。
サンプルの見栄えを良くする為、ついでに使っただけなので
ダブルクリック自体を扱うためには必要ありません。
◆makeView ソース (別途 StableParticle Module が必要です)
default{
state_entry(){
string texture = "7967bb39-5429-7e99-519e-c0ca917d5988";//マウスの絵のUUID
string col = "<1,1,1>";
string scale = "<.2,.2,.2>";
string bFullBright = "FALSE";
llSetAlpha(0,ALL_SIDES);
llMessageLinked(LINK_THIS,0,"harayoki.stablePtcl TRUE "+texture+" "+col+" "+scale+" "+bFullBright,NULL_KEY);
}
}


※DoubleClickModuleのソースは次のエントリーで公開します。
の、予定です。
ソースコードの整理は終わってるのですぐ出せます。

--

さて、かなり余談ぽいのですが、
今回、マウスの写真はリアルの撮影ブースで撮影しました。
SL内の撮影ブース形状はこういった物に似せて作りました。

ダブルクリックを取得(1)
ライトも1つで、デジカメ用意するのが面倒だったので、
ケイタイで撮影しちゃいましたけど…どうせ256x256だし。
まあ、それでもパスで抜くのは格段に簡単になります。

リアルなテクスチャを作る際は、素人なりに本格的な写真撮影にも
チャレンジしたいと思っています。

同じカテゴリー(ダブルクリック)の記事画像
ソース2:ダブルクリックモジール(4)
verUP ダブルクリックモジュール(3)
ダブルクリックを取得(2)
同じカテゴリー(ダブルクリック)の記事
 DL:ダブルクリックモジール(5) (2007-05-15 06:48)
 ソース2:ダブルクリックモジール(4) (2007-05-10 01:10)
 verUP ダブルクリックモジュール(3) (2007-05-09 22:29)
 ダブルクリックを取得(2) (2007-05-06 17:38)
この記事へのコメント
わー!ケータイで撮ってるし!!!
Posted by mina jun at 2007年05月06日 13:40
手抜きです
Posted by harayoki at 2007年05月06日 17:29
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。