昔書いた長距離用高速テレポーターのスクリプト にllSetRegionPosを使うよう書き換えてみたら、こんな感じでかなりシンプルになりました^^
// 長距離用高速テレポーター(新)
vector dest; // 目的地の座標保存用
vector pos; // 出発地の座標保存用
default
{
state_entry()
{
llSitTarget(<0.2,0,0.55>, ZERO_ROTATION); // 座る位置
dest=llGetPos(); // 現在位置の座標を目的地に設定
llOwnerSay("Destination = "+(string)dest);
}
changed(integer change)
{
if (change & CHANGED_LINK) { // リンクが変わったとき
key id=llAvatarOnSitTarget(); // 乗ってるアバターのキー
if (id) {
if (pos) return; // 出発地座標が設定されてるとき(動作中)はリターン
pos=llGetPos(); // 現在位置を出発地の座標に設定
llSetRegionPos(dest); // 目的地へテレポート
llUnSit(id); // 目的地でアバターを降ろす
llSetRegionPos(pos); // テレポーターを出発地に戻す
pos=ZERO_VECTOR; // 出発地の座標をクリア
}
}
}
}
移動させる部分以外は変更してないので、使い方は古いのと全く同じです。目的地でスクリプトをリセットしてから出発地に置くだけで使えます。
0 件のコメント:
コメントを投稿