FC2ブログ
カエル隊ショップバナー
Secondlife Shop : NEW! http://maps.secondlife.com/secondlife/Senna/199/223/1201
Secondlife MarketPlace : https://marketplace.secondlife.com/ja-JP/stores/67233

LiA Vol.5:チュウベイのちゃがまはどこだinセカンドライフ(SecondLife)

このエントリーをはてなブックマークに追加


Recommend






テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

参加ランキング:にほんブログ村 セカンドライフ

初歩のスクリプト講座 スクリプトの構造inセカンドライフ(SecondLife)

このエントリーをはてなブックマークに追加
皆さんこんにちわ。
JeckField Raymakerです。

このコーナーでは、LSL初心者向けに、他のプログラム言語の経験者でもつまづきやすいLSLの仕組みなども踏まえ、解説していこうと思います。
編集ウインドウの使い方から始め、数度に分けて最終的にはsitテレポータを完成させます。

ではまず椅子のスクリプトから作ってみましょう。オブジェクトを用意してください。
僕はとりあえずboxをパスカットして「椅子っぽいモノ」を作成しました。



さて、作ったらまず座ってみましょう。
なかなか座れなかったり、変な向きに座ってしまったり、向きが正しくても左右にずれていたりするはずです。
複雑な形の椅子でも正しい位置に座れるよう、sitスクリプトを書いていきましょう。
編集ウインドウの「コンテンツ」タブを開き、「New Script」ボタンを押してください。新しいスクリプトが生成されます。
生成された「New Script」をダブルクリック等で開くと、スクリプト編集運移動が現れます。

編集ウインドウの各部名称は以下のとおり

(1)タイトルバー
(2)メニューバー
(3)スクリプトウインドウ
(4)メッセージウインドウ
(5)プルダウン
(6)実行チェック
(7)セーブボタン
(8)リセットボタン


スクリプトには決まった構造があり、これを守らないと決して動作しません。



上記は、新規に自動で生成される「New Script」の構造図です。Defaultステートは、最初に実行されるステートです。
LSLは、イベントドリブンな言語で、全ての動作はイベント単位で行われます。
state_entry()イベントは、ステートが開始したときに起きるイベントで、スクリプトが生成されオブジェクトにロードされた瞬間に開始します。
イベントの内部では、関数(いわゆる「コマンド」にあたります)が上から順に実行されます。この場合は、llSayが記述されていますので、0チャンネルに対して"Hello,Avatar!"と発言されます。
その後スクリプト「イベント待ち」状態に入ります。
この間、スクリプトは事実上動作しません。
さて、state_entry()イベントの下にtouch_start()イベントが記述されています。これは、オブジェクトをクリックした瞬間(つまり、タッチをスタートしたとき)に起きるイベントです。
ですので、このオブジェクトは、誰かがクリックした瞬間に"Touched."と発言するのです。

ではいよいよsitスクリプトを記述していきましょう。
sit位置を設定する関数は、llSitTarget()関数です。
この関数はいつ実行されれば良いのでしょうか。
実は、この関数はプリム自体にsit位置を記憶させるための関数です。
実行後にsit位置が有効になりますので、記述するべき位置はstate_entry()の内部です。
state_entry()イベント内部のllSay()関数は不要ですので、削除してください。そこに、llSitTarget()関数を記述します。
プルダウンからllSitTarget()を選び、()の中を下記の通りに記述してください。

defalut {
    state_entry() {
        llSittarget(<0.0, 0.0, 0.1>,<0.0, 0.0, 0.0, 0.0>);
    }
}


touch_start()イベントは省略しています。上記の通り削除してしまってもかまいません。
()の中の値を引数といい、llSitTarget()関数は二つの引数を持っています。一つ目の引数はvector型という3つの値を持つ数値で、これがスクリプトを入れたプリムに対するアバターのsit位置を示します。二つ目の引数はrotation型という4つの値を持つ関数で、プリムに対するアバターの角度をあらわします。
ここまで記入したら一度saveして実際に座ってみましょう。



オブジェクトの形状によってさまざまと思いますが、私の場合はこんななっちゃいました。上記の角度をゼロにしているため、プリムのローカル角度に対してまっすぐ座っているのです。
まずはこの角度を直すのですが…

実はこのratation型は、機械にとってわかりやすい表現方法で人間が記述するのには向いていません。
そこで、llEuler2Rot()関数を使い、人間にとってわかりやすいX,Y,Z方式(オイラー値と言います)で記述します。
llEuler2Rot()関数は、オイラー型の角度をrotationに変換してくれる関数ですが、個々の数値には180度をπとする「ラジアン角を指定しなくてはなりません。
度数で指定したい場合、ここにDEG_TO_RADという定数を掛けるだけでラジアンに変換できますので、これを使いましょう。

llEuler2Rot(<0.0, -90.0, -90.0> * DEG_TO_RAD)


角度はプリムのローカル座標に基づいたものになりますが、慣れないとわかりにくいので、最初はXYZをそれぞれ一つずつ指定して座りながら調整していきましょう。このとき、座ったままでは反映されませんので、必ず一度立ってから座り直してください。
僕の場合はこれで椅子に対してまっすぐになりました。

defalut {
    state_entry() {
        llSittarget(<0.0, 0.0, 0.1>,llEuler2Rot(<0.0, -90.0, -90.0> * DEG_TO_RAD));
    }
}


角度を合わせてから位置を調整します。
この時のX,Y,Zの数値もプリムのローカル角度に依存しますので、プリムの向きを確認しながら作業しましょう。BuildウインドウのRuler modeをローカルにすると、選択したプリムの向きが矢印の色でわかるようになります。

これも、3つの数値を一度に変えず、XYZをそれぞれ一つずつ調整します。私の場合は、<-0.65, -0.4, -0.45>でちょうど良い位置に吸われるようになりました。

defalut {
    state_entry() {
        llSittarget(<-0.65, -0.4, -0.45>,llEuler2Rot(<0.0, -90.0, -90.0> * DEG_TO_RAD));
    }
}




詳しく書きましたので難しく感じる部分もあったと思います。
次回からテレポータの製作にかかります。
挫けずついてきていただければ幸いです。
Jackfield Raymaker

Recommend






テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

参加ランキング:にほんブログ村 セカンドライフ

VWC & EXPO2008inセカンドライフ(SecondLife)

このエントリーをはてなブックマークに追加
記者がこの記事を書いている一ヶ月後、リンデンラボのCEOフィリップ・ローズデール氏が日本で初の講演を行う。そのVirtual World Conference & EXPO 2008というイベントはリアルとバーチャルが連動するさまざまな企画を展開するものである。メインの期間は5月28日(水)、29日(木)、30日(金)という平日の3日間と、惜しくも記者のような土日休みの会社員にとってはとて〜も辛い日程ではあるが…。
イベントにはリアル会場である東京ビックシティ、そしてインワールドの会場で行われる。5月24日(土)予定のパーチャル前夜祭や5月15日(木)から一ヶ月間続く展示会もある。
注目のフィリップ氏の講演は中日の29日(木)の午前に行われる。うーん、29日か…何か予定あったっけ?と頭の中のスケジュール帳をめくった人もいるのでは?この雑誌を読んでいるときも読者が途切れなく体験しているセカンドライフというバーチャルワールドは彼によって産み落とされたものである。興味が沸くのも不思議ではない。
ただし見るには公式サイトからの登録が必要だ。既に登録は開始されているのでお早めに!登録せずとも会場へは入れるようだが入場料が5,000円かかってしまう。講演終了後にはバーチャルワールドのユーザを対象としたリアル会場とインワールド会場連動のパーティも開かれるのでパーティ好きには見逃せない。登録を忘れてしまって、5,000円かけるならばこの機会にとっておきのフォーマルを探しておくのもいいかもしれない(Word by ituki Beck)

Recommend






テーマ : Seond Life(セカンドライフ)
ジャンル : オンラインゲーム

参加ランキング:にほんブログ村 セカンドライフ

カエル隊の中を検索
カエル隊最新記事
投稿記事カテゴリ
看板屋カエル隊プロフィール

看板屋カエル隊 まゆみ

 

mayumi Frog

ブログ開設当初はともかく!
現在は「看板屋」ナシで
「カエル隊」が
屋号的あだ名みたいな?
セカンドライフで遊ぶカエルでケロっ♪

About Us

最新記事のお知らせは

最新記事のお知らせはtwitterで♪

リンク
最新コメント
最新トラックバック
お気に入りイロイロ
てきとぉなお気に入りリンク集♪ (順番もてきとぉ)


RSSリンクの表示
看板屋カエル隊QRコード
QR
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

サイトマップ

全ての記事を一覧表示する

Gallery