2008年10月25日
自動的に閉まるドアのスクリプト
purin が作っている迷路にドアを付けたのだけれど
-----
スクリプト スクリプト と探し フリーなスクリプトにあったものを入れていたのだけれど
-----
これ 開けると開いたまま... 自動的に閉まるようにしたいよね...
-----
というわけで 調べてみたけれど いまいち分からなかったので 作ってみることにした w
-----
開かせる所とかは フリーなスクリプトにあったのをコピペ
-----
時間で閉めるのは timer でやろうと思ったら ステート 使うのがエレガントじゃね?
-----
というわけで こうしてみた w
-----
アクションを ステートに入る時(state_entry)にするか 出る時(state_exit)にするか というのは
-----
アクションによって振り分けた方がよさそうで 少し頭を使う部分かもしれない w
-----
-----
-----
スクリプト スクリプト と探し フリーなスクリプトにあったものを入れていたのだけれど
-----
これ 開けると開いたまま... 自動的に閉まるようにしたいよね...
-----
というわけで 調べてみたけれど いまいち分からなかったので 作ってみることにした w
-----
//-----
// File: AutoCloseDoor.lsl
// Date Author number of nodes
// 2008/10/24 walkinglint 36
//
float delay2close = 10.0;
do_rotate(float rad) {
rotation rot = llGetRot();
rotation delta = llEuler2Rot(<0, 0, rad / 2> );
rot = delta * rot;
llSetRot(rot);
llSleep(0.25);
rot = delta * rot;
llSetRot(rot);
}
default {
state_entry() {
llPreloadSound("Door close");
llPreloadSound("Door open");
state close;
}
}
state close {
state_entry() {
llTriggerSound("Door close", 1.0);
}
touch_start(integer total_number) {
state open;
}
state_exit() {
do_rotate(PI / 2);
}
}
state open {
state_entry() {
llTriggerSound("Door open", 1.0);
llSetTimerEvent(delay2close);
}
timer() {
llSetTimerEvent(0.0);
state close;
}
touch_start(integer total_number) {
state close;
}
state_exit() {
do_rotate(-PI / 2);
}
}
開かせる所とかは フリーなスクリプトにあったのをコピペ
-----
時間で閉めるのは timer でやろうと思ったら ステート 使うのがエレガントじゃね?
-----
というわけで こうしてみた w
-----
アクションを ステートに入る時(state_entry)にするか 出る時(state_exit)にするか というのは
-----
アクションによって振り分けた方がよさそうで 少し頭を使う部分かもしれない w
-----
-----
Posted by walkinglint at 06:02│Comments(0)
│ドア