ソラマメブログ › セカンドライフ自給自足生活めざして › 物作り教室 › タッチしたらしゃべる

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」       ・・・保存成功


これで完了です





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

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

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

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

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


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


同じカテゴリー(物作り教室)の記事画像
フローティングテキスト
ポーズボール
バロンの家
物作り教室1
同じカテゴリー(物作り教室)の記事
 フローティングテキスト (2009-02-07 23:20)
 ポーズボール (2009-02-04 22:36)
 バロンの家 (2009-02-02 20:35)
 物作り教室1 (2009-01-29 21:11)

Posted by 57577 iuga at 05:36│Comments(0)物作り教室
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。