Site search
2008年7月13日日曜日
高度300m以上に行けるテレポーターのスクリプト
Windowsが起動しなくなってからずっと予備に入れてたLinux使ってたんです。でも昨日、Linuxが入ってるとWindows XPがインストールできないことがわかったので仕方なくLinux消したんですよ。それでやっとWindows復活できてほっとしてたんですが、Linuxのブレンダーのデータをバックアップするの忘れてたおバカな千尋です orz
今回は前回に続きましてテレポーターのスクリプトです^^
座る位置を利用したテレポーターは高度300mくらいが限界なので、もっと高い場所にテレポートするにはオブジェクトに乗せてエレベーターとかみたいに移動させます。
オブジェクトの移動にはllSetPosを使いました。でもこの関数って最大10mしか動かないんですよ^^;
なので目的地に着くまでループさせますw
// 高度300m以上へ行くテレポーター
vector dest;
vector pos;
integer move=FALSE;
default
{
state_entry()
{
dest=llGetPos(); // 現在の座標を目的地に設定
llOwnerSay("Destination = "+(string)dest);
llSitTarget(<0.0,0.0,1.2>, ZERO_ROTATION); // テレポーターに乗る位置
}
changed(integer change)
{
if (change & CHANGED_LINK) {
key agent=llAvatarOnSitTarget();
if (agent) {
if (move) llUnSit(agent); // 移動中は搭乗拒否
else llRequestPermissions(agent,PERMISSION_TRIGGER_ANIMATION);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION) {
move=TRUE;
llStopAnimation("sit"); // 座るアニメ停止
llStartAnimation("stand"); // 立ちポーズ実行
pos=llGetPos(); // 出発地の座標設定
vector p=pos; // 移動中の座標を定義
if (dest) {
while (p != dest) { // 目的地の座標になるまでループ
llSetPos(dest); // 目的地を指定しても最大10mしか移動しない
p=llGetPos(); // 移動中の座標
}
}
key agent=llAvatarOnSitTarget();
if (agent) llUnSit(agent); // 到着後に立たせる
while (p != pos) { // テレポーターを出発地点へ帰す
llSetPos(pos);
p=llGetPos();
}
move=FALSE;
}
}
}
設定は目的地に置いてスクリプトをリセットするだけです^^ (スクリプト開いて右下のボタン)
今回は前回に続きましてテレポーターのスクリプトです^^
座る位置を利用したテレポーターは高度300mくらいが限界なので、もっと高い場所にテレポートするにはオブジェクトに乗せてエレベーターとかみたいに移動させます。
オブジェクトの移動にはllSetPosを使いました。でもこの関数って最大10mしか動かないんですよ^^;
なので目的地に着くまでループさせますw
// 高度300m以上へ行くテレポーター
vector dest;
vector pos;
integer move=FALSE;
default
{
state_entry()
{
dest=llGetPos(); // 現在の座標を目的地に設定
llOwnerSay("Destination = "+(string)dest);
llSitTarget(<0.0,0.0,1.2>, ZERO_ROTATION); // テレポーターに乗る位置
}
changed(integer change)
{
if (change & CHANGED_LINK) {
key agent=llAvatarOnSitTarget();
if (agent) {
if (move) llUnSit(agent); // 移動中は搭乗拒否
else llRequestPermissions(agent,PERMISSION_TRIGGER_ANIMATION);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION) {
move=TRUE;
llStopAnimation("sit"); // 座るアニメ停止
llStartAnimation("stand"); // 立ちポーズ実行
pos=llGetPos(); // 出発地の座標設定
vector p=pos; // 移動中の座標を定義
if (dest) {
while (p != dest) { // 目的地の座標になるまでループ
llSetPos(dest); // 目的地を指定しても最大10mしか移動しない
p=llGetPos(); // 移動中の座標
}
}
key agent=llAvatarOnSitTarget();
if (agent) llUnSit(agent); // 到着後に立たせる
while (p != pos) { // テレポーターを出発地点へ帰す
llSetPos(pos);
p=llGetPos();
}
move=FALSE;
}
}
}
設定は目的地に置いてスクリプトをリセットするだけです^^ (スクリプト開いて右下のボタン)
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿