Posted by at

2009年02月01日

タッチしたらしゃべる

住人のknockさんが作ってたワンコのおうち
タッチしたらチャットに「touched.」ってでました


触ったら「さわったよ」と
犬小屋が喋っています

ちなみにこれは立派なスクリプト
プリムの生成をして「コンテンツ」タブを開き
「新しいスクリプト」をクリックすると出来上がるデフォルトのスクリプトです




出来上がった「New Script」をダブルクリックすると
こんな編集画面がでてきます



すべてはこのスクリプトが基本
以下、ざっくり解説です

*********************************************
default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, " Touched. " );
}
}
*********************************************


default
リンデンスクリプトのはじまりを意味します
例外もありますが、ここから以降がスクリプトとして動いていきます


state_entry
スクリプトの「最初の状態」を意味します
NewScriptを生成した際「Hello,Avator! 」とチャットで発言されるのは
その状態が「最初の状態」にあるから

ここでは「Hello,Avator! 」と発言されていますが
ほかにもこのスクリプト(プリム)がどんな性質であるか
記述する場合にも使われれます


touch_start
文字通り「タッチしたらスタート」です
この「タッチしたら〜」はイベントと呼ばれ
「装着したら〜」「ぶつかったら〜」「お金を払ったら〜」
スクリプトの動くきっかけになります


llSay( 0, " Hello,Avator! " );】
llSayは日本語で言うところの「動詞」にあたる部分です
ここではチャットで発言させるllSayが使われていますが
この赤文字にあたる「ll」のついた物を関数といいます

ちなみにこのllSay( 0, " Hello,Avator! " );
ざっくり訳すと「0チャンネルで、Hello,Avator! と発言さす」
ということになります

「0チャンネル」とは通常チャットで使われるチャンネル
このチャンネルについては必要に応じて説明しますが
みんながチャットでみえるよう喋らせたいときは通常「0」を指定します



さて、今回 knockさんが目指していたのは
「犬小屋をタッチしたらワンという」というスクリプトをいれること
いまの状態はタッチしたら「Touched.」といいますので
単純にこの部分を「ワン」に入れ替えてしまいます

default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, " ワン! " );
}
}

じつはこれは間違いです
では何が間違い?

正解は " ワン! "
スクリプトに日本語が使えないからです

しかしエンコードという方法を用いて日本語を表示可能にします
SL内でもできなくはありませんが今回はこちらのサイトを使い
日本語をエンコードしていきます

urlencode.net

左のマスに日本語を 
「オプション」で必ず「UTF-8」を選択して
「エンコード」ボタンを押します
すると右のマスに暗号のような半角英数の文字列が出てきます

ワン! → %E3%83%AF%E3%83%B3%EF%BC%81

エンコードするとこんな結果になりました
では以下 貼付けてみます

*********************************************
default
{
state_entry( )
{
llSay( 0, " Hello,Avator! " );
}
touch_start(integer total_number)
{
llSay( 0, llUnescapeURL(" %E3%83%AF%E3%83%B3%EF%BC%81 " ));
}
}
*********************************************


エンコードした文字列をスクリプトに読ませるため
llUnescapeURL( )を追加してやりました


編集画面の「保存」をクリックします
「Compile successful,saving...」 ・・・保存中
「Save complete」       ・・・保存成功


これで完了です





【エラーが出る場合はここを疑え】

・スクリプトはみな{ }( ) でくくられます
 括弧がきちんと閉じられないとエラーが出ます

・関数のあとにある「;」は大事
 編集中に消したりしているとエラーになります

・スクリプトに日本語は使えません 
 すべて半角英数字で記述します。全角の( )や句読点もエラーの対象です

・文章や文字列は必ずダブルクォーテーション「" "」で囲みます
 スクリプトでは文字列と整数はサルと鯛くらい種別が異なります
 文字列は必ずダブルクォーテーション「" "」でしっかり囲ってやります


ここまでできればいろんな物に応用可能です
おもわぬ物におもわぬ発言をさせて遊びましょう  


Posted by 57577 iuga at 05:36Comments(0)物作り教室