セカンドライフプラネット

セカンドライフのスクリプト言語(LSL)をプラネットします。3DCG で物体をプラネットしたりもします。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

2つのTipsを合成する方法(玄関センサー)

一般に、完結した短いスクリプトのことをTips とよびます。そのため、各Tips は何か一つの機能を実現している場合が多いです(単機能)。

単機能のTips を複数合成することで、多機能にすることができます。

2つのTips を合成する場合、簡単に合成する方法と複雑に合成する方法があります。

・簡単に合成する場合、2つのTips をそのまま使用します。
・複雑に合成する場合、2つのTips から1つのTips を作成します。


●簡単に合成する方法
オブジェクトには複数のスクリプトを入れることができます。

そのためオブジェクトに、Tips A という名前のスクリプトと、Tips B という名前のスクリプトを入れることでTips A の機能とTips B の機能を合成できます。

セカンドライフ スクリプト Tips


例を挙げると、
Tips A が「雪を降らせる」スクリプトで、Tips B が「ジングルベルを演奏する」スクリプトだとします。

この場合、2つのTips を一つのオブジェクトのコンテンツに入れることで、そのオブジェクトは「雪を降らせながら、ジングルベルを演奏する」オブジェクトとなります。

このように、2つのTips を簡単に合成した場合、2つのTips は「独立して動き」ます。


●複雑に合成する方法
2つのTips が「協調して動く」ようにするには、2つのTips を1つのTips にする必要があります。

2つのTips を一旦分解して、1つのTips に再構成します。いわばTips を改造することになり、プログラミングの初歩的知識が必要となります。

例を挙げると、
Tips A が「センサーでアバターを検知する」スクリプトで、Tips B が「音をならす」スクリプトだとします。
(これらのTips はAipiro さんHPから引用させていただきました。快諾していただき有難うございます^^)

もう少し具体的には、各Tips の機能は以下のとおりです。
Tips A:「センサーでアバターを検知し、オーナーにお客さんが来たことをチャットで伝える」
Tips B:「オブジェクトをタッチすると、音をならす」

この2つのTips から新たなTips を作成します。
Tips C:「センサーでアバターを検知し、音をならす」

Tips A とTips B を先に説明した「簡単に合成する方法」で合成してもうまくいきません。
2つのTips は独立して動きますが、協調して動いてはくれません。

プログラムを見ていきます。
(各Tipsの詳細はAipiro さんHP をご参照ください)


□Tips A:
「センサーでアバターを検知し、オーナーにお客さんが来たことをチャットで伝える」

default
{
    state_entry()
    {
        llSensorRepeat("", "", AGENT, 2, TWO_PI, 1.0);
    }

    sensor(integer total_number)
    {
        llOwnerSay("The guest arrived.");
    }
}

・・・パラメータ説明
llSensorRepeat 関数の4番目パラメータは「センサー検知エリア」を半径で指定します。現在は2mです。
llSensorRepeat 関数の6番目パラメータは「センサー検知時間」を時間間隔で指定します。現在は1秒です。1秒に1回センサーを動かします。


□Tips B
「オブジェクトをタッチすると、音をならす」

default
{
    state_entry()
    {
        llPreloadSound("Chime sound");
    }

    touch_start(integer total_number)
    {
        llPlaySound("Chime sound",1.0);
    }
}

・・・パラメータ説明
llPlaySound 関数の2番目パラメータは「音量」です。0.0~1.0の範囲の数値を指定します。最大音量は1.0 です。


□Tips C
「センサーでアバターを検知し、音をならす」

default
{
    state_entry()
    {
        llSensorRepeat("", "", AGENT, 2, TWO_PI, 1.0);
        llPreloadSound("Chime sound");
    }

    sensor(integer total_number)
    {
        llOwnerSay("The guest arrived.");
        llPlaySound("Chime sound",1.0);
    }
}

これらのプログラムを見ると、2つのプログラムをトランプのシャッフルのように混ぜ合わせて、新たなプログラムを作っていることがわかります。


●玄関センサー
以前、2つのTips の合成方法について、レイさんから相談を受けました。話を伺うと、訪問者履歴を取るような本格的なものではなく、カフェバー「天空」の玄関チャイムのような簡単なものをイメージしていました。

 Tips C は玄関センサーとして使用可です。ただ、若干使いづらい点があるので、少し修正します。

修正1:連続検出の回避
Tips C をそのまま使用するとすぐに気がつくのは、同一アバターを連続して検出してしまうことです。

玄関に設置するので、「アバターは玄関を通過する」のでOKなのですが、玄関付近に立ち止まったりした場合にこの現象が起きます。

以下のように、llSleep 関数を使用して連続検出を回避します。

default
{
    state_entry()
    {
        llSensorRepeat("", "", AGENT, 2, TWO_PI, 1.0);
        llPreloadSound("Chime sound");
    }

    sensor(integer total_number)
    {
        llPlaySound("Chime sound",1.0);
        llSleep(10.0);      // sensor off time
    }
}

・・・llSleep 関数はスクリプトの実行を停止させる関数です。パラメータはスクリプト停止の時間(秒)です。10秒間スクリプトを停止させています。

修正2:オーナー検出の回避
玄関センサーなので、オーナーを検出しても問題ないのですが、一応対策を記述しておきます。

    Key  ownerKey  =  llGetOwner();

と、ownerKey変数にオーナーのUUID を代入しておき、sensor イベントでセンサーが反応したアバターを一人ずつオーナーか否かをチェックすれば対応できます。


□設置場所とパラメータ調整
Tips は短いプログラムなのでなかなか融通は利きません。そこで、設置場所を工夫したり数少ないパラメータを調整したりして対応してみてください。

・・・検知エリア:2mは結構短いです。玄関サイズに合わせてください。
・・・反応時間間隔:0.5秒でも良いかもです。
・・・無反応時間:テストして調整してください。

玄関センサーなので、その精度は「訪問者をどの程度見落とし無く検出するか」です。

製品版であれば、訪問者の見落としがあると問題なのですが、今回のTips はそんなに精度良くないと思います。例えば、高速で(飛行して)訪問したアバターは見落とすことがあるでしょう。

あまり精度の良くないセンサーを使用する場合は、複数のセンサーを違う場所に設置することで、全体の精度を高めることができます。

センサーの設置場所などいろいろと工夫するのも楽しいですね^^


□別の方法
訪問者を検出する方法は別の方法があります。訪問者が通過する場所に、透過度の高いファントム物体を置いておきます。この物体とアバターとの衝突を検出するといった方法でシムへの負担も少なく良い方法です。
しかし、この方法は、アバターがちゃんと玄関から入ってきてくれる場合は良い方法ですが、アバターが壁を通過して来たり、オープンな造りのお店では工夫が必要になります。

スポンサーサイト

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/12/10(月) 14:03:20|
  2. LSL101
  3. | トラックバック:0
  4. | コメント:0

スクリプトTips講習会やっています

リンデンスクリプト言語(Linden Script Language:LSL)のTips講習会やっています。

スクリプトを全く知らない人向けの実地講習です。南海の孤島でのんびりゆっくりやってます^^

●LSL Tips
Tipsとは単体で動作する短いプログラムのことです。

親切なサイトには面白いTisp がたくさん載っています。
(リンクを参照)

Tips を商品に組み込むことで、商品に何らかの「動き」や「変化」をつけることができます。商品にマッチしたTips は商品の魅力をアップさせます。

実は、Tips を手っ取り早く利用するのにプログラムの詳しい知識はいりません。

Tips を商品に「コピー&ペースト」すればそのまま動きます!
って、そうなのですが、このTips のコピペ作業自体がスクリプト初心者には難しいです。


●LSL Tips講習会(0L$)
そこで、この講習会では、Tips のコピー&ペーストを実地講習します。
具体的には、Tips を商品に組み込む方法を実習します。

場所:Game Forum のMember's Sandbox
対象:スクリプト初心者
日時:毎週水曜日・土曜日夜10時~11時(終了時間は目安です)
目的
・・・Tipsを商品に組み込む方法がわかります
・・・スクリプトの基礎の基礎がわかります
申込
・・・事前申込は不要です。参加自由です
・・・当日Game Forum のサンドボックスに集合してください

当日のスケジュール
・・・準備:Game Forum Member 登録(注1)
・・・前半:Tips「Hello, Avatar!」を動かします
・・・後半:Tips「雪パーティクル」をコンパイルして動かします(注2)
(注1)Game Forum Member's Sandbox が24時間利用可能になります。
    自習や商品制作にご利用ください。
(注2)講習会後半の内容は順次変わります。今回は季節がら「雪」です。

進行
会話はタイピング・チャットで行います。一通り講師が説明しますので、実際に作業してください。雑談・立ち歩き・踊り大歓迎です。作業がうまくいかないときは参加者どうしでも助け合ってみてください。

secondlife script LSL tips

こんな感じで、ひろーい場所で、のんびりまったりやってます^^


●LSL 入門講座
Tips を手軽に使用するにはプログラミングの知識は不要ですが、Tips を改造したりまた自分でTips を作成したりするにはLSLプログラミングの知識が必要です。
そのため、Game Forum では、LSL を用いたプログラミング入門講座を開講しています。
【SL Game Forum】http://slgameforum.ninja-web.net/page_learning1.html

こちらは有料となりますが興味のある方はお問い合わせください。
【連絡先】
・・・このブログにコメントをください。その際、「管理者にだけ表示を許可する」にチェックを入れてください。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/12/01(土) 00:08:07|
  2. LSL101
  3. | トラックバック:0
  4. | コメント:0

プロフィール

Aa

Author:Aa
SLプラネットへようこそ!
Koenjiで物づくりしてます。
皆さん、遊びにきてください。

ショップのSLURL

ショップ(白屋)のSLURLです。メタバーズの高円寺にあります。商品を展示販売しています。

メタバーズ、高円寺、白屋

最近の記事

月別アーカイブ

カテゴリー

ブログ内検索

おすすめ商品!


パソコンの横において、疑問点をサッと調べられます!...



オブジェクト制作を基礎から解説!販売方法も詳しく記述!...



すぐに使えるサンプルプログラムを多数収録!...



関数の詳しい記述あり!辞書のように便利!...

ゲームPC

ゲーム用パソコンならドスパラへ!Galleriaシリーズが大人気!

リンク

このブログをリンクに追加する

スポンサードリンク

スポンサードリンク

最近のコメント

最近のトラックバック

RSSフィード

FC2カウンター

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。