マイコン関連,パソコン関連から
ゲームレビューやらなにやら,
私の捻じ曲がった視点から
戯言を綴る趣味ページです.
[PR]
2025.05.23 Friday
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
自作オブジェクトを操作できるLSL
2011.05.05 Thursday
LSLはLinden Script Language の頭文字をとったもので,SL内で作用するプログラミング言語になります.LSL内ではスクリプトといえば通じるはずです.私もやっとスクリプトをいじれる様になってきました.とりあえず参考になるURLを貼ります.
英語のリファレンス:とりあえずここを見れば全て載っているはずです
AIPIRO.COM:スクリプト例が沢山あります
Makapu@BlackSheep-LSL:SL内の親切な方に教えて頂ました
原宿竹下工房:オブジェクト作成からスクリプトまクリエイターのためのサイトです
上記のサイトを眺めるだけでもかなり勉強になります.
基本的なことは上記サイトで学べるので,以下は私のメモです.
オブジェクトを動かしたい
関数は『llSetPos』です.使い方例は以下,
vector pos = llGetPos(); //現在位置を取得
pos.x = pos.x + 1; //取得位置からx座標値を加算
llSetPos(pos); //座標を更新します
オブジェクトを回転したい
関数は『llSetRot』です.使い方例は以下,
rotation rot = llGetRot(); //現在の角度を取得
llSetRot(rot * llEuler2Rot(<5.0/180.0*PI,0,0>));
//角度を更新
注意すべきことは回転角度の指定はラジアンであること.
上の例は 5 [deg]回転するもの.
『/180*PI』を計算することでラジアンに変換しています.
定期的に割り込みをかけたい
関数は『llSetTimerEvent』です.使い方例は以下,
llSetTimerEvent(2.0); //2秒毎に割り込み
timer()関数内で割り込み処理を記述.
別のオブジェクトを操作したい
実はこれ,非常に簡単.話しかけるだけなんです.ただ普通にはなしかけるのではなく,特定のチャンネルを指定します.チャンネル0で普通の会話と同じです.
llSay(チャンネル,"内容");
これで送信側はOK.次は受信側の設定です.
state_entry()
{llListen(チャンネル,"","","");}}
llListenの引数は興味があれば自分で調べてみてください.上の例では送信側の特定はしていません.別のオブジェクトからの話でもチャンネルさえ合えば受信できます.受信した際の行動は,
listen(integer channel,string name,key id, string message)
{
if(message == "内容")
{
させたい内容;
}
}
のように記述すればOK.簡単でしょ?
これだけで十分objectを操作できますよね.最近よく思うようになってきたのですが,こんなに自由度が高く何でもできるSLが何故はやらないのだろう・・・不思議で仕方ない.ただ,人がそれ程いないお陰でSL内で自由にスクリプトの練習やら,オブジェクトの作成ができるのですが・・・そのうちお金払って自分の土地を持ちたいなぁと本当に考え始めています.
英語のリファレンス:とりあえずここを見れば全て載っているはずです
AIPIRO.COM:スクリプト例が沢山あります
Makapu@BlackSheep-LSL:SL内の親切な方に教えて頂ました
原宿竹下工房:オブジェクト作成からスクリプトまクリエイターのためのサイトです
上記のサイトを眺めるだけでもかなり勉強になります.
基本的なことは上記サイトで学べるので,以下は私のメモです.
オブジェクトを動かしたい
関数は『llSetPos』です.使い方例は以下,
vector pos = llGetPos(); //現在位置を取得
pos.x = pos.x + 1; //取得位置からx座標値を加算
llSetPos(pos); //座標を更新します
オブジェクトを回転したい
関数は『llSetRot』です.使い方例は以下,
rotation rot = llGetRot(); //現在の角度を取得
llSetRot(rot * llEuler2Rot(<5.0/180.0*PI,0,0>));
//角度を更新
注意すべきことは回転角度の指定はラジアンであること.
上の例は 5 [deg]回転するもの.
『/180*PI』を計算することでラジアンに変換しています.
定期的に割り込みをかけたい
関数は『llSetTimerEvent』です.使い方例は以下,
llSetTimerEvent(2.0); //2秒毎に割り込み
timer()関数内で割り込み処理を記述.
別のオブジェクトを操作したい
実はこれ,非常に簡単.話しかけるだけなんです.ただ普通にはなしかけるのではなく,特定のチャンネルを指定します.チャンネル0で普通の会話と同じです.
llSay(チャンネル,"内容");
これで送信側はOK.次は受信側の設定です.
state_entry()
{llListen(チャンネル,"","","");}}
llListenの引数は興味があれば自分で調べてみてください.上の例では送信側の特定はしていません.別のオブジェクトからの話でもチャンネルさえ合えば受信できます.受信した際の行動は,
listen(integer channel,string name,key id, string message)
{
if(message == "内容")
{
させたい内容;
}
}
のように記述すればOK.簡単でしょ?
これだけで十分objectを操作できますよね.最近よく思うようになってきたのですが,こんなに自由度が高く何でもできるSLが何故はやらないのだろう・・・不思議で仕方ない.ただ,人がそれ程いないお陰でSL内で自由にスクリプトの練習やら,オブジェクトの作成ができるのですが・・・そのうちお金払って自分の土地を持ちたいなぁと本当に考え始めています.
PR
comment
trackback
この記事にトラックバックする ()
カレンダー
04 | 2025/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
ブログ内検索
最新記事
カテゴリー
プロフィール
HN:
Porky Penguin
性別:
男性
職業:
実はニートではない
自己紹介:
落書きやら,趣味について雑記していく予定.他にはソフトの覚書きなど記していくつもりです.
自画像は,以前私に似ていると言われた漫画のキャラクター,わかるかなぁ・・・某少佐です.(9巻,p190を参考にしました)
ついでに眼鏡を私の眼鏡にかけ直してみました.
自画像は,以前私に似ていると言われた漫画のキャラクター,わかるかなぁ・・・某少佐です.(9巻,p190を参考にしました)
ついでに眼鏡を私の眼鏡にかけ直してみました.
カウンター
フリーエリア