ソラマメブログ

2008年02月19日

【講座】誰でもできるLSL 基本

LSL 講座 リンク

こんにちは jvnです。
風邪なおったかなぁ、と思ったら
具合が悪くて、会社を初早退です。
しばらくSLお休みしよう。。。と思いつつブログは更新


まずは基本



昨日の予告どおり、サンプルソースの解説をします


default // <-- ① デフォルトステート
{
state_entry() // ② イベント
{

llTargetOmega(<1,0,0>, PI, 0.5); // ③ここに好きな関数を入れてみよう

} // -->②ー1 state_entry イベントはここまで

} // -->①ー1 default ステートはここまで


コメントで要望があったので、実行している関数が違います。
基本は同じだと思ってください。

このスクリプトを プリムの中に書くと
おもむろにプリムがまわります。
ぐるぐる


今日の目標

 単純に実行されるだけのLSLを書けるようになる

もう実現しましたね。
あなた天才。

では、解説です。


導入



LSLに限らず、プログラムは
書いてあることを順番にコンピュータが実行します。

なので
 ・どのタイミングで
 ・なにを行うか

これさえ書けば、
実際に動くプログラムができあがります。

 文字をプリムに表示するのも
 タッチしてノートを渡すベンダーを作ることも
 回転するスクリューをつくるのも

LSLで動いているものは すべてこの原理で動いています。

タイミングについて
 ステート
 イベント
の項で説明します。

なにかを行う について
 関数
で説明します。

タイミングは軽く流すつもりですが
書いていたら長くなりました。
文字は多いですが、中身は薄いです。
さらっといきましょう。


LSL の実行タイミング



ステート



まず、LSLを実行すると
default という ステートに入ります。
① から ①ー1 までが defaultステートです。

ステートとはなんぞや という話しはまた今度。

「実行すると」 というのは次のタイミングです。


  • スクリプトをプリムに入れたとき

  • スクリプトのリセットを押したとき

  • スクリプトを変更して保存したとき



これらのタイミングで
default ステートに入ります。

おじゃまします


イベント



いらっしゃいませ

ステートにはいると
イベントがいくつか書いてあります。

イベントというのは タイミングを決めるものです。

 タッチしたときに ここを実行
 座ったときに ここを実行
 rezされたときに ここを実行

なんて感じに、イベントを設定することができる というわけ。

LSLでは どんなイベントが書けるのかなぁ と思った人は
LSL IncSearch で [events] と打ち込んでみましょう。
LSLで実行できるイベントの一覧がでてきます。


②に書いてあるのは 「ステートに入ったとき」というイベントです。
default に入ると、
 default に入る
 state_entry() に入る
こんなタイミングで処理が動きます。


ステートのことは触れません、といいましたが触れます。

ひとつのステートに 同じイベントをいくつも書くことは出来ません。

だから、同じイベントで違う処理を行いたいときは
ステートを複数書きます。

あーあ 説明しちゃった。


ステートも イベントも
{ から始まって
} で終わります。
この中括弧の使い方は覚えましょう。
LSLの基本です。

始まりと終わりの {} はスペースや改行無しで書いてもかまいませんが、
見にくくなるので、 スペースで頭をそろえましょう。
jvnは
 ステートの {} は行の頭
 イベントの {} はタブを1ついれてから書く
とやっています。
スペースの数は各々の勝手ですが、
ひとつのプログラムの中では統一したルールにしましょう。

これは 別にやらなくてもプログラムは動きますが
ソースを見やすくするためには とても重要な点です。
これを 「インデントを入れる」 と言います。

友達のソースを見て

default
{
state_entry
{
llSay(0,"Uhehehehee");
}
}


とか


default{state_entry{llSay(0,"Uhehehehee");}}


とか書いてあったら
「インデントをそろえてみたら 見やすくなるんじゃない?」
と言うとちょっと出来る人っぽくなります。

実際に言ったら ムッ とされました。
気をつけましょう。
出来るひとはねたまれます。


タイミング のまとめ



イベント という タイミング で LSLの実行の順番が決まる

ステート は イベント の セット である。

ということを覚えましょう。


何を行うか



関数



実際に何を実行するか 見てみましょう。

イベントの中には
関数 というものを書きます。
関数 は何を行うか を書くものです。

サンプルソースの ③ のところですね。

LSLで使える関数を 例のごとく LSL IncSearch で検索してみましょう。
[functions] で出てくるのが関数の一覧です。

334 個もでてきました。
これ全部覚えるのは大変です。

なので、関数の基本的な使い方を覚えたら あとはリファレンスを見ましょう。
それで十分です。
jvnも全部覚えていません。
ていうか、覚えられないから 検索ツールを作りました。

やっているうちによく使う関数は 覚えてしまいます。
何回も手で打ってるうちに覚えちゃうからです。

今後のこの講座では

 主だったイベントについての説明
 関数の使い方の説明

をやる、と思ってください。


さて、今日のサンプルソースは

llTargetOmega(<1,0,0>, PI, 0.5);

を実行しています。
プリムを回転させる関数ですね。

 関数名();

 関数名( 値 );

が、関数の書き方です。

; は関数のおしまいに書きます。
これがないと エラーが出ます。
意外にはまるので 気をつけましょう。


関数に渡す値のことは 引数 といいます。

jvnはこれをずっと いんすう と読んでいました。
会社に入ってばかにされました。
これは ひきすう と読みます。
いいですか ひきすう ですよ。
牛がもぐもぐするのは はんすう です。

ひきすう 覚えましょう。

引数が必要な関数があれば、必要ない関数もあります。
関数の説明と一緒に、引数の説明も必ずあるので
リファレンスを調べましょう。


llTargetOmega(<1,0,0>, PI, 0.5);


関数の説明と 引数の説明は マウスでクリックしたら出ます。
以上。

わはは。


まとめ



関数 は 実行すること を書く。

実行の仕方を 引数 で設定しなきゃいけないこともあります。


次回予告



次は タッチイベント の説明と
変数 というものを勉強します。

変数は 引数に渡す値をちょっと工夫して持つための仕組みです。


integer FG;

default
{
touch_start(integer num)
{
llSay(0,(string)FG);
FG = !FG;
}
}


くれぐれも、ソースをコピーすることなく
実際に手を動かして打ち込みましょう!

では また次回。

LSL 講座 リンク

タグ :LSL初級

同じカテゴリー(LSL講座)の記事
 【中級】センサースクリプトに挑戦 (2008-03-14 18:59)
 【講座】誰でもできるLSL touch (2008-02-26 12:10)
 【講座】誰でもできるLSL Listen (2008-02-23 10:34)
 【講座】誰でもできるLSL timer (2008-02-22 12:00)
 【講座】誰でもできるLSL IF 質問 (2008-02-21 15:03)
 【講座】誰でもできるLSL IF (2008-02-21 12:10)
Posted by Jvn Writer at 14:26│Comments(2)LSL講座
この記事へのコメント
これって5個のプリムでリンクで構成されたスクリューでもOK?
それをエンジンにつけてリンクしてもOK?
Posted by ティナ at 2008年02月19日 19:21
うわw それきついなぁ

ルートプリムにスクリいれると 子プリムもルートと一緒にまわります。
子プリムにスクリ入れると 子プリムがまわります。

5個のプリムでリンクされたスクリュー だけだったら ルートプリムに入れればまわるんだけど

エンジンにリンクすると エンジンがルートになるから スクリューまわらないなぁ。
スクリューをルートにすると エンジンも一緒にまわるし。

うーーん^^;

スクリュー プリム1にしちゃだめかな。
テクスチャ貼るとか。
それだと回避しようがあるんだけど。。
Posted by Jvn WriterJvn Writer at 2008年02月19日 19:59
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。