エビマヨ60分クッキング第2回〜ジェスチャー&ポーズスクリプト編その2〜

2008.06.14.21:00

 

こんばんは^^えびです。

前回に引き続き、今回もジェスチャーとポーズスクリプトです。(4月23日番組分前編)

イベントに参加してくださったみなさま、難しい内容になってしまってごめんなさいm(_ _)m
なかなか60分の枠でスクリプトを説明するのは、難しいものです。。。

では、リベンジってことで、この場を借りて解説していきます。


〜〜スクリプトの下準備〜〜
前回のジェスチャーをスクリプトで書いていったらどうなるか、という前にスクリプトを作る下準備をしましょう。


セカンドライフのスクリプトは、オブジェクトの中に埋め込むことで動作します。
なので、まず、オブジェクトをつくります。
(オブジェクトのつくり方はmaximumのモデリング講座に参加してみてねw)

上の画像のように、 オブジェクトの編集ウィンドウからコンテンツタブをクリックし、「新しいスクリプト」を押します。 そうすると、Contentsフォルダーの中にNew Scriptが生成されます。

New Scriptを編集してスクリプトを作っていくわけですが、

このスクリプトをダブルクリックしてみると、
デフォルトで、右にあるスクリプトが記入されています。


〜〜Hello,Avatar!〜〜
==================================
1:default
2:{
3: state_entry()
4: {
5: llSay(0, "Hello, Avatar!");
6: }
7:
8: touch_start(integer total_number)
9: {
10: llSay(0, "Touched.");
11: }
12:}
====================================
デフォルトのスクリプトを行数を入れて書いてみました。


さきほど「新しいスクリプト」ボタンを押したときに、
object:Hello,Avatar!
とオブジェクトが話しかけてきたと思います。

このスクリプトにはもう一つ機能があって、
オブジェクトをタッチすると
object:Touched.
と話しかけてきます。

実際の中身をみてみると、
英語以外に()やら{}がいます。

スクリプトはたくさんの決まりごとがあるので、ちょっとでも間違うとすぐに、エラーを起こします。

括弧は{}で一括りです。()も両方そろって一括りです。
イベントと呼ばれる処理以外には必ず;をつけなければなりません。句読点の「。」みたいな感じてす。


先ほどの画像に緑や青の線で{}を結んでありますが、{}のなかにある文章で、なにかしらの動作(命令)が行われます。


1・2・12行目のdefault{ }は、スクリプトをつくる際に必須の文なので、
スクリプトの最初と最後には必ず付くと覚えておいてかまいません。(最初とは限らないのですが、これは後ほど説明します)

5行目と10行目に似たような文で
llSay(0,"〜〜〜〜");とあります。

これが、話しかける命令文です。
誰に話しかけるわけでもなく、普通にみなさんがチャットする感じで、しゃべります。

似たような命令では
llShout(0,"〜〜〜〜〜"); ←叫ぶ(シャウトする)
llWhisper(0,"〜〜〜〜〜");  ←ささやく
llOwnerSay("〜〜〜〜〜");   ←オブジェクトのオーナー(持ち主)だけに話す
というものがあります。

では、どういう状況で、話し始めるかというと、
3行目と8行目にある文章で判断しています。
この文は、イベントとよばれ、あるイベントが発生したとき{}内の命令を実行します。

3行目のstate_entry()というイベントは
初めてスクリプトが実行されたときとか、スクリプトがリセットされたときに起こります。

8行目のtouch_start(integer total_number)は
オブジェクトにタッチしたときに起こります。

イベントはそのほかにも色々あって、
listen(integer channel,string name,key id,string message)・・・チャット(会話)を聞いたとき。
attach(key id)・・・オブジェクトを身につけたり、外したとき。
on_rez(integer start_param)・・・REZしたとき。
などあります。

では、「ジェスチャー&ポーズスクリプト編その3」で実際にスクリプトをいじっていきます。

投稿者:メルティングドッツ|