何枚抜けるか壁抜けテスト


なんか面白そうなTool HUDのPlugINでも作ろうかなと思いついたのが壁抜けダッシュ。
LSLで高速に叩くと近い位置にあるObjectはすり抜けてしまうという・・・。不具合なのかも知れないけど、そーいう仕様。
Tool HUDの本体に収容しなかったのは移動補助にあたるので(忍者ツール系とも言われたりします)デフォで入ってるのは宜しくないことと建物とかも侵入出来てしまうので、これまた宜しくないってことで採用しなかったのです。
そこで追加機能としてはどーだろうと思ったのですが「あまりにも内容がない」ことからPlugINとしても見送ることになりました。LOL
スタックしたときとか正しく使えば機能的に便利だと思いますけどね~。

でも、いったいどの程度の厚みのある壁をすり抜けられるのだろう?という疑問が涌いてきたので、ちょっと砂場で実験してみることにしました。

画像ではよく分からないと思うので、同じ実験をしたい人は以下のLSLコードを参考にしてください。
1.テキトーにObjectを作成(箱でいいです。Attachするので0.1x0.1x0.1ぐらいがいいかも)
2.ObjectをTakeしてHUDとしてAttach
3.attachしたままnew scriptでスクリプトを生成
4.次のコードをcopy paste

default{
    touch_start(integer total_number){
        if(!llGetAttached()) return; //Attachされてないなら戻る
        vector fwd = llRot2Fwd(llGetRot()); //前方向(X軸)のベクトルを取得
        llApplyImpulse(fwd*1000,FALSE);   //テキトーに叩く
        llSleep(0.2);                       //少し待つ
        llApplyImpulse(-llGetMass()*llGetVel(),FALSE);
        //アバター質量と現在の速度に合わせた逆ベクトルを与える
    }
}

HUDにattachしたObjectをTouchすればアバターが向いている方向へダッシュします。

実験結果としては、単一Objectなら通常Primで10m幅でも楽にすり抜けていました。
そこで単一Objectでなく複数Objectではどうなのかと2枚隣接させて置いてみました。
それでもひっかからずに抜けてしまいました LOL
 
2枚でダメなら5枚でどーだー・・・・・これもすり抜け



くっついてるからダメなのかな? 5枚目を1枚分引き離して設置
これでもやっぱしすり抜けてしまう。



もっと引き離せばいいのかな? 間隔はそのままで1枚目と5枚目のみ構成でテスト
それでもやっぱりひっかからない・・・。

monoエンジンになってから速い衝突も処理出来ると聞いていたけれど、近すぎるとやっぱダメみたいですね。




2 件のコメント:

  1. maaya yohkoh2009/11/28 10:00

     壁抜けは計算で距離出せるんじゃないかな。
    と、思ったけど最高速いくつまでだろ?w
    とりあえず60mくらいなら十分貫通すると思います。
    何度かそういった距離で貫通して移動とかした事が
    有りますしね。

     monoの衝突処理が〜と言うのはイベント起動の
    早さとほぼ思っていいので,それ以上の早さが
    出せれば幾らでもコリジョン抜けが可能ですね。

     なので枚数でと言う事ならば一枚毎に再加速を
    かけさえすれば無限に貫通出来ると思います。
    実際はエナジー管理の関係、simの広さ、ラグ等の
    問題で途中で止まるでしょうがね。

    返信削除
  2. コメントありがとうございます。イベント時間よりも速いことによる抜けですね、銃弾などで速すぎて抜けていくのをよく見ます。10mや60mってなると、もはや壁じゃなくなってますね^^

    返信削除

Popular Posts of the Month