LSL衝突判定できたっ!

リア

2008年08月28日 13:17


こんにちは^^

前記事の・・・ターゲット・・・完成♪  ̄m ̄ ふふ

今日は・・・休みでよかった・・・・

苦節・・・14時間・・・~~~~~~~(;_ _)O パタ...

これわ・・・昨日の記事のコメントでヒントを下さった、いちおかさんのおかげですっ(o*。_。)oペコッ

ありがとうございました( ̄∇ ̄*)ゞエヘヘ





どの角度から撃っても・・・ばっちり(*^-゜)vィェィ♪

とゆうことで・・・LSL・・・公開っ ̄m ̄ ふふ

vector v;    // 衝突位置を把握しちゃう変数
vector v2;      //  的のオブジェクトの中心座標をいれる変数
vector P3;   // 的上の点P3
vector P1;   // 的上の点P1
vector P2;   // 的上の点P2
vector HOUSEN;  //  法線ベクトル計算用1
vector HOUSEN2; //  法線ベクトル計算用2
vector HOUSEN3; //  法線ベクトル計算用3
vector vec;
vector kekka; // 最終的な弾の跡をREZする位置を格納
vector v3; //速度ベクトル用
float a;
float b;
float t;

default {
   
    collision_start(integer num_detected) {  //衝突がおきちゃったら動くイベント
    v = llDetectedPos(0);           //弾の衝突位置をvに入れるっ
    v2 = llGetPos();                             //的のオブジェクトの中心座標をしらべる
    v3 = llVecNorm(llDetectedVel(0));   //速度ベクトルを単位ベクトルに変換                 
   
    P1 = <v2.x - 0.005, v2.y + 0.9 , v2.z + 0.5>;     //点P1の座標ベクトル まとの大きさ x=0.01m y=1.8m z=1.0m
    P2 = <v2.x - 0.005, v2.y + 0.9 , v2.z - 0.5>;     //点P2の座標ベクトル
    P3 = <v2.x - 0.005, v2.y - 0.9 , v2.z - 0.5>;     //点P3の座標ベクトル
   
  
    HOUSEN2 = P2 - P1 ;
    HOUSEN3  = P3 - P1 ;
    HOUSEN =  HOUSEN2 % HOUSEN3 ;  //外積の計算
    
    HOUSEN = llVecNorm(HOUSEN); //法線の方向ベクトル・・・のつもり
    
    vec = P1 - v ;
   
    a = vec * HOUSEN;
    b = v3 * HOUSEN;
    t =( a / b );
   
    kekka = v + v3 *t;    //最終的な弾の跡のREZ位置
  llRezObject("tamanoato",kekka,ZERO_VECTOR,ZERO_ROTATION,1); 
    }
}

効率とかは一切考えておりませんが・・・・(;´▽`A``

とりあえず、完成♪

いちおかさん、ありがとうございます♪ とても参考になりました^^

ベクトル・・・数年ぶり?に考えた・・・*o_ _)oバタッ

モノ作り