2008年5月8日木曜日

GoalGate Script and List

ここ数日、面白くてスクリプトの実験を繰り返しています。
ゴールゲートのスクリプト。

結果:ゴールのオブジェクトを通過すると、通過した順番に、読み上げる。

いろんなアプローチのしかたがあるみたいで
LSLBBSでもトピックスにあがっています

今回の条件:
ジェットスキー(グループ共有)、オブジェクトのオーナーと乗り手は違う人

センサーを使う方向でいたのですが、ちょっと軌道修正。

友人の案:
登録ゲートはセンサーをつかって、ジェットスキーのUUIDとアバター名を抜く
それをリストに格納してゴールに送る。ゴールは衝突判定で、リストとゴールしたオブジェクトを比較。
マッチした順番にリストの名前を抜き出してシャウトする。(2プリム使用)

私の案:
ゴールゲートはエントリーしている人が最初に各自タッチ。そのときにアバターとオブジェクトのUUIDを抜く。リストに格納。ゴール時の判定は上記と同じ。(1プリム使用)

4回レースがあるので、リセット機能があるといいかも。

リストの使い方をマスターするのにいい練習だと思われ。
確認したこと:
list entry_list;
string avname;
integer i;

default
{
touch_start(integer total_number)
{
avname = llDetectedName(0);
llWhisper(0,avname);
//タッチでアバター名を取得、whisperで名前を確認

entry_list += [avname];
//リストentry_listに名前を追加

i = llListFindList(entry_list,[avname]);
//リストに格納されているか確認。(空だと-1がかえってくる)

llWhisper(0, (string)i);
}
}

リストの理解を少しずつ@@;

追記:
サーフボードのったまま(つまり乗り物にSit)でタッチしても名前は抜けたぞっと
 

2 件のコメント:

匿名 さんのコメント...

バウンディングボックスを使ったトライだけど ちょっとおかしい部分があるから再検討します。
ごめんね

pipinpa Allen さんのコメント...

おお~、了解。

ま、のんびり推理でもしていきましょうw