ソラマメブログ
QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
プロフィール
AnkerEilde
AnkerEilde
突撃!勝手に隣の観光案内を書いてます〜
オーナーへメッセージ

2008年06月04日

LSLに悩む

 現在製作している建物に仕掛けを作ろうと、無い能力を使いつつLSLの解説サイトなどを見ながら挑戦したものの、やはり作れなかったものがあります。

 作りたいのは近距離テレポータです。ただし、条件があります。
 それは、「一定範囲内から操作しないとテレポートしない」ということ。
 ガイドなどに書いてある近距離テレポータは、llSitTargetを使ったものになっていますが、これを用いようとすると、スクリプトが動作したときは既に座っている=0m距離にいることになってしまいます。

 考えたのは、ユーザーの手順が一つ増えますが、至近距離で一回タッチしたらテレポータが一定時間もしくは一回だけ作動するというのならうまく行くのかもしれないということなのですが、既存のテレポータスクリプトの改造ではどうにもうまく行きません…
 やはり、ちゃんと1からLSLを学んでいないから、うまく理解できていないんだなぁと実感。
 どなたかご親切な方、良い方法があれば御指南下さいませ〜。

Posted by AnkerEilde at 00:03│Comments(8)メモ
この記事へのコメント
初めまして^^通りすがりです。
どういったものを作ろうとしているのかがわからないですが、座っていないアバターを動かすというのは難しいと思いますよ^^;
単に近寄った時だけ動作する物で良いのでしたら、センサーを組み合わせれば出来るはずです。センサーオンでステート移行という感じですかね。頑張ってくださいね~^^
Posted by DOD at 2008年06月04日 02:09
DODさん
 ありがとうございます。
 別の場所でも提案がありましたが、やはりセンサー利用が一番良さそうな感じですね。
 頑張ってみます^^
Posted by AnkerEilde at 2008年06月04日 09:21
難しいですよねぇ~^^;
脱出部屋第4弾でもチャレンジしたのですが思いつかず(´・ω・`)
結局テレポーター(正解)にカバーを掛け3m以内でのタッチのみに反応させてカバーを持ち上げる  
と言う方法が手っ取り速く作れたので採用しました。
Sensor出しっぱなしでよければ通りすがりのDODさんのようなやり方や
Sensor指定範囲内に入ったらテレポーターをRezさせるなんてことも出来ると思います。

負荷かからず手っ取り速い方法に逃げてしまう私なので深く実験出来てません(´・ω・`)
Posted by みゅき at 2008年06月04日 09:27
みゅきさんも悩まれましたか^^
センサーを使うと負荷がかかると言われてなかなか怖くて手が出しにくいですね〜。

ちょっと考えて衝突の方で試してみました(テレポートハック自身はmakapuさんのを参考にしてみました)。
vector offset ;
rotation rot = ZERO_ROTATION;
default {
collision_start(integer num_detected){
llSay(0 ,"on" );
offset = <0.0, 0.0, 10.0>;
llSitTarget(offset, rot);
llSleep(5.0);
offset = <0.0, 0.0, -10.0>;
llSitTarget(offset, rot);

}
changed(integer change){
if (change & CHANGED_LINK){
key k = llAvatarOnSitTarget();
if (k != NULL_KEY) {
llUnSit(k);
}
}
}
}

何となく動いている様な気もするのですが、大丈夫かなぁ??
Posted by AnkerEildeAnkerEilde at 2008年06月04日 22:29
あ、ちなみにオブジェクトは平面床で、上に乗ってから5秒以内にその床にsitという形です。
Posted by AnkerEildeAnkerEilde at 2008年06月04日 22:31
これだと、llSleepの5秒間挙動がおかしいことが判明…。

コリジョン判定スクリプトと、テレポートスクリプトを別にして、リンクメッセージで繋ぐ形にしたらうまく行きました!!
Posted by AnkerEildeAnkerEilde at 2008年06月05日 00:24
もんのすごく後でブログに気づいてしまった。

あんまり複雑にしないで、床のコリジョン検出でエレベータをテンポラリREZする方法が
一番らくですよ(笑)

たとえばこんなルーチン
①人が床に乗る
②1mセンサーを1回行いエレベータを探す。
 ※名前を指定してセンサーを動作させておけば
  no_sensorイベントを使ってエレベータがあるか判断できる。
③no_sensorイベントでエレベータをレンポラリREZ
 ※乗ったときだけのREZなんで普通のREZと負荷は変わりません。
 ※REZなんで好きなように演出して出現させる事ができます。
④あとは普通にエレベータに乗るだけ

☆エレベータをセンサー1回で探すのは沢山エレベータを出現させない様にする為です。

しかし、2ヶ月も前の話でしたか・・・
管理範囲のSIMですし相談してくれれば良かったのに(笑
Posted by Fakefur at 2008年08月06日 19:21
おやぶんありがとうです^^。
次回新迷宮の際には検討してみます〜^^
Posted by Anker Eilde at 2008年08月08日 13:41
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。