プログラム系はHello world!で精一杯 (゚A゚ )
なんですけど、友達の店の建物の既存のドアスクリプトが吹っ飛んでしまったのでヒィヒィ言いながらサンプルスクリプトを探すの巻。
- 近づいたら開く
- 自動的に閉まる
- 開閉のSE鳴らす
- 観音開き(近づいたときは両ドアが開く)
- タッチでも開け閉めできる
条件はこんな感じ。
その前にセカンドライフのドアの基礎知識ですが、一般的な回転ドア(ノブをひねって引いたり押したりして開けるやつ)を作る場合、実際のドアの倍の体積になるように、図のように隅に透明オブジェクトなどを配置するみたいです。
角に透明オブジェクトをつけることで、ドア全体の中心点(回転軸)がドアの蝶番の位置にくるわけですね。中心点を蝶番の位置にすることにより、回転させるだけでドアの開け閉めの動作ができるわけです。つまりスクリプト的に簡単。
※追記※
ボックスプリムでドアを作る場合は、形状タブの「切り取り」の始点と終点の値を変更することで中心点を蝶番位置にすることができます。これを利用して、半分にしたボックスプリムの中にメッシュドアを入れてリンクし中心点を調整するという方法もあるかも。(でも以下で書くようなリンクで動かすセンサーでは使えない)
今回はドアのオブジェクトは既にあるので、簡単にドアっぽいものを組んでスクリプトを入れてテストしてみます。まずは下のページを参考にして自動ドアを作ってみます。
左右のドア、床のセンサーにそれぞれスクリプトを入れ、センサーをルートプリムにして3オブジェクトはリンクします(※ドア枠は必要ない)だだしこちらのスクリプトはスライド式ドアなので、観音開きにはなってくれません;;
そんな訳で、上のスクリプトをベースにしてドア左右のスクリプトを改造します。
とりあえずスライド式(移動方式)から回転式にします。その後、タッチでもドアが開くようにタッチオープンの部分を追加。ついでにタイマーで閉じる部分も頂きます。
観音開きの場合は左右で回転の角度が90度と-90度になりますので、そこの値だけ左右のドアでスクリプトが違います。そんな感じで自動とタッチ、タイマーで閉まるがきちんと動いたら、あとは音を入れるだけ。
ドアを開いたり閉じたりする部分に音を入れます。上のスクリプトで頭に宣言してるのはセカンドライフデフォの扉SEのUUIDですね。お好みの音源に変えても面白いかもしれません。
ついでにセカンドライフ デフォのサウンドUUID一覧のページにリンク貼っておきますね。
最後にドアの基礎知識に戻って。観音開きの扉は上から見るとこんな感じですね。
90度回転させることで、このように通り抜けできるわけです。
ただし、回転させ過ぎに注意!90度以上回転させると、中心点のために配置した透明オブジェクトに引っかかってアバターが通り抜けできない事案が発生することが。私はこれをやらかして、小一時間「何が引っかかってるんだろう?」と悩みました(アホ)
なにはともあれ、スクリプトを解説、公開してくださってる方々に感謝っ!こんなん一から書けって言われたらムリゲーです。