2008年10月22日
オブジェクトへの指示
オブジェクトへアバターが指示を出す方法ですが、通常は以下の3パターンになります。
1.ダイアログ
2.HUD
3.チャット・コマンド
これらに関しては、基本的にはListenを使って、アバターとオブジェクト間でメッセージを交信しているもので、似たような使い方ができます。
しかし、それぞれに特長もありますので、簡単に書いておきたいと思います。
1.ダイアログ
詳細な設定等を行う場合に使われます。

一番の特徴としては、Detected系のイベントと組み合わせて、イベントが発生した時にダイアログを表示させて使うと言う事ですね。
Detected系とは、touch、collision、sensor系のイベントで、検知したアバター等の情報を取得できる関数の事です。
詳しくは、Makapu@BlackSheep-LSLまたはBlackSheep-LSL@Wikiを参照下さい。
http://miz.slmame.com/
http://www21.atwiki.jp/mizcremorne/
具体的には、「使いたい時に」、「使いたい人が」、「アクションを起こした時」と言う形態になります。
つまり、アバターが何らかのアクションを起こした時に、はじめてListenが起動されて、ダイアルログが表示され、ダイアログからの指定にそって、オブジェクトがメッセージを聞き取り動き出すと言う事ですね。
要は常時使用はしないけど、必要があれば、何時でも設定画面を呼び出して、指示を出せると言う形態のものに適しています。
また、複雑な組み合わせの設定を行う場合も、ダイアログを使う方が望ましいと思います。
従って、Gonbeの製作する商品類は、最初設定したら、そうそう設定を変えませんから、ダイアログ形式が多用されています。
2.HUD
これはHUDオブジェクトを作り、HUDオブジェクト内に操作対象のオブジェクトへのメッセージを仕込んでおいて、HUD上のボタン・オブジェクト等にタッチする事によって、仕込んだメッセージを対象オブジェクトに伝達する方式です。
これも、対象オブジェクト側はListenでメッセージを受け取ります。

この場合は、対象オブジェクト側は常時Listen状態で居なくてはなりません。
ダイアログが、対象オブジェクトをタッチした時にListen状態になるのと、この辺が違います。
更にダイアログの場合は、Detected系で取得したアバター情報を元に起動しますから、場合によっては不特定者に対しても、操作を可能にできます。
勿論オーナーのみとか、オーナーと同じグループの人のみとかの制約をつける事もできます。
しかし、HUDは基本的には装着して使うので、装着者=所有者しか操作できないと言う事になります。
もっとも、HUDもオブジェクトですから、Rezして設置しておけば、不特定者に対してHUD操作(もはやHUDとは言えない?)を可能にもできますが。。。
このように、HUDを使う物は、頻繁にオブジェクトを操作したいと言う場合です。
アバターの装着物等で、会話等の合間に、装着物にアクションさせたい場合とかは、一々装着物をタッチして、ダイアログを表示させ・・・なんてやっていると、タイミング良く機能を発動できません。
HUDならワンタッチで瞬時に伝達でき、効果的な演出が出来ることになります。
この事から、HUDが使われるのは、頻繁に操作が発生するような類の物と言う事になります。
良く有るのは、レーダー系や翻訳機系、TP支援等のものですね。
AO等に関しても、頻繁にアクションを切り替えたいという場合には、HUD経由で操作したほうが効率的です。
HUDは頻繁に使用し、ワンタッチでアクションを起こせる程度の設定に対して有効です。
ダイアログのように、多段階の複雑な設定には、あまり向かないと思います。
ただし、ライティング設定を変えたり、音楽のボリューム調整や、スピーカの出力指定等の、視覚的に連動しながら、瞬時に切り替えていくような物に対しては、複雑な構成にはなりますが、HUDで全てを連携させて状態を視覚化し、瞬時に操作できるようにした方が良いでしょう。
乗り物系の操作HUDも同様ですね。
高度計やスピード計、レーダー等、その状況に合わせてHUD内に表示させ、操作系ボタン等で指示を出しながら操縦すると言う形態になると思います。
ダイアログでは間に合いません。><
3.チャットコマンド
本来は、この形式が基本形で、一番に理解すべき内容でしょう。
良く使われるのは、"/9 stop"等のように特定チャネルを指定して、簡潔なコマンドをチャットから発言するものです。
この対象オブジェクトも、常時Listen状態で、指示を受け取れなくてはなりません。
実はダイアログやHUDも、チャネルの使い方次第では、このチャットコマンド形式との併用が可能になります。
では、HUD、ダイアログとの決定的な違いは何でしょうか?
一番の違いは、チャネルの使える範囲になります。
チャットコマンド形式に関しては、"-9"のようなマイナスチャネルは使えません。
ダイアログとHUDでは、マイナスのチャネルも使用できます。
また、チャットの場合は、一々手打ちすると言う事から、あまり桁数が多く、複雑なチャネルは使えません。
例えば、"1987547093チャネルを使う"と言われたら、この数字を覚えていられるでしょうか?
Gonbeには不可能です。
ダイアログやHUDの場合は、"-34875629034"と言ったややこしいマイナス数字を使ったり、ダイアログならRez時に乱数で適当なチャネルを生成して使用したりもできます。
しかし、チャットコマンド形式では、せいぜい2桁か3桁程度のプラスの数字程度しか使えない事になります。
要は、チャットコマンド形式は、単純なコマンド指定で、単純な指示を出すだけの場合には適していると言う事になります。
このように、すべてListenを介して、アバターの指示をオブジェクトが聞き取る形態なのですが、それぞれに特性があり、最適な場面と言う物が存在します。
また、一つのオブジェクトでも、用途に応じて、チャット、HUD、ダイアログを併用している物も多々有ります。
概ね、ダイアログが複雑な設定を行う場合に使い、通常頻繁に使う指示系統はHUDにまとめ、滅多に使わないが、単純な指示ですむ部分はチャットコマンドで済むような仕組みにしたりします。
また、チャットコマンドをトリガーにして、"/9 menu"とか発言すると、ダイアログが出てきて、本格的な設定場面に移行するという使い方もできます。
逆にタッチでダイアログを表示し、ダイアログ側のボタンを押すと、「30秒以内にペットの名前を発言してください。」とメッセージを出して、チャットコマンド待ちになるような使い方も有ります。
まずは、これらの操作性や、利用制限事項を把握し、適材適所に使い分けられるようにしましょう。
1.ダイアログ
2.HUD
3.チャット・コマンド
これらに関しては、基本的にはListenを使って、アバターとオブジェクト間でメッセージを交信しているもので、似たような使い方ができます。
しかし、それぞれに特長もありますので、簡単に書いておきたいと思います。
1.ダイアログ
詳細な設定等を行う場合に使われます。

一番の特徴としては、Detected系のイベントと組み合わせて、イベントが発生した時にダイアログを表示させて使うと言う事ですね。
Detected系とは、touch、collision、sensor系のイベントで、検知したアバター等の情報を取得できる関数の事です。
詳しくは、Makapu@BlackSheep-LSLまたはBlackSheep-LSL@Wikiを参照下さい。
http://miz.slmame.com/
http://www21.atwiki.jp/mizcremorne/
具体的には、「使いたい時に」、「使いたい人が」、「アクションを起こした時」と言う形態になります。
つまり、アバターが何らかのアクションを起こした時に、はじめてListenが起動されて、ダイアルログが表示され、ダイアログからの指定にそって、オブジェクトがメッセージを聞き取り動き出すと言う事ですね。
要は常時使用はしないけど、必要があれば、何時でも設定画面を呼び出して、指示を出せると言う形態のものに適しています。
また、複雑な組み合わせの設定を行う場合も、ダイアログを使う方が望ましいと思います。
従って、Gonbeの製作する商品類は、最初設定したら、そうそう設定を変えませんから、ダイアログ形式が多用されています。
2.HUD
これはHUDオブジェクトを作り、HUDオブジェクト内に操作対象のオブジェクトへのメッセージを仕込んでおいて、HUD上のボタン・オブジェクト等にタッチする事によって、仕込んだメッセージを対象オブジェクトに伝達する方式です。
これも、対象オブジェクト側はListenでメッセージを受け取ります。

この場合は、対象オブジェクト側は常時Listen状態で居なくてはなりません。
ダイアログが、対象オブジェクトをタッチした時にListen状態になるのと、この辺が違います。
更にダイアログの場合は、Detected系で取得したアバター情報を元に起動しますから、場合によっては不特定者に対しても、操作を可能にできます。
勿論オーナーのみとか、オーナーと同じグループの人のみとかの制約をつける事もできます。
しかし、HUDは基本的には装着して使うので、装着者=所有者しか操作できないと言う事になります。
もっとも、HUDもオブジェクトですから、Rezして設置しておけば、不特定者に対してHUD操作(もはやHUDとは言えない?)を可能にもできますが。。。
このように、HUDを使う物は、頻繁にオブジェクトを操作したいと言う場合です。
アバターの装着物等で、会話等の合間に、装着物にアクションさせたい場合とかは、一々装着物をタッチして、ダイアログを表示させ・・・なんてやっていると、タイミング良く機能を発動できません。
HUDならワンタッチで瞬時に伝達でき、効果的な演出が出来ることになります。
この事から、HUDが使われるのは、頻繁に操作が発生するような類の物と言う事になります。
良く有るのは、レーダー系や翻訳機系、TP支援等のものですね。
AO等に関しても、頻繁にアクションを切り替えたいという場合には、HUD経由で操作したほうが効率的です。
HUDは頻繁に使用し、ワンタッチでアクションを起こせる程度の設定に対して有効です。
ダイアログのように、多段階の複雑な設定には、あまり向かないと思います。
ただし、ライティング設定を変えたり、音楽のボリューム調整や、スピーカの出力指定等の、視覚的に連動しながら、瞬時に切り替えていくような物に対しては、複雑な構成にはなりますが、HUDで全てを連携させて状態を視覚化し、瞬時に操作できるようにした方が良いでしょう。
乗り物系の操作HUDも同様ですね。
高度計やスピード計、レーダー等、その状況に合わせてHUD内に表示させ、操作系ボタン等で指示を出しながら操縦すると言う形態になると思います。
ダイアログでは間に合いません。><
3.チャットコマンド
本来は、この形式が基本形で、一番に理解すべき内容でしょう。
良く使われるのは、"/9 stop"等のように特定チャネルを指定して、簡潔なコマンドをチャットから発言するものです。
この対象オブジェクトも、常時Listen状態で、指示を受け取れなくてはなりません。
実はダイアログやHUDも、チャネルの使い方次第では、このチャットコマンド形式との併用が可能になります。
では、HUD、ダイアログとの決定的な違いは何でしょうか?
一番の違いは、チャネルの使える範囲になります。
チャットコマンド形式に関しては、"-9"のようなマイナスチャネルは使えません。
ダイアログとHUDでは、マイナスのチャネルも使用できます。
また、チャットの場合は、一々手打ちすると言う事から、あまり桁数が多く、複雑なチャネルは使えません。
例えば、"1987547093チャネルを使う"と言われたら、この数字を覚えていられるでしょうか?
Gonbeには不可能です。
ダイアログやHUDの場合は、"-34875629034"と言ったややこしいマイナス数字を使ったり、ダイアログならRez時に乱数で適当なチャネルを生成して使用したりもできます。
しかし、チャットコマンド形式では、せいぜい2桁か3桁程度のプラスの数字程度しか使えない事になります。
要は、チャットコマンド形式は、単純なコマンド指定で、単純な指示を出すだけの場合には適していると言う事になります。
このように、すべてListenを介して、アバターの指示をオブジェクトが聞き取る形態なのですが、それぞれに特性があり、最適な場面と言う物が存在します。
また、一つのオブジェクトでも、用途に応じて、チャット、HUD、ダイアログを併用している物も多々有ります。
概ね、ダイアログが複雑な設定を行う場合に使い、通常頻繁に使う指示系統はHUDにまとめ、滅多に使わないが、単純な指示ですむ部分はチャットコマンドで済むような仕組みにしたりします。
また、チャットコマンドをトリガーにして、"/9 menu"とか発言すると、ダイアログが出てきて、本格的な設定場面に移行するという使い方もできます。
逆にタッチでダイアログを表示し、ダイアログ側のボタンを押すと、「30秒以内にペットの名前を発言してください。」とメッセージを出して、チャットコマンド待ちになるような使い方も有ります。
まずは、これらの操作性や、利用制限事項を把握し、適材適所に使い分けられるようにしましょう。
llDetectedTouchST
llAddToLandPassList
【注意】Bulk Permissions機能は使っては駄目!
HTTP-INを使ってみた。
ペットを作るには(6)
ペットを作るには(5)
llAddToLandPassList
【注意】Bulk Permissions機能は使っては駄目!
HTTP-INを使ってみた。
ペットを作るには(6)
ペットを作るには(5)
Posted by Gonbe Shan at 12:42│Comments(0)
│スクリプトのお勉強メモ