2008年08月27日
LSL衝突判定っ*o_ _)oバタッ
こんばんは^^
射撃場に置いてある ↓ のようなターゲットを自作したくって
頑張ってみましたっ
↑ これ・・・弾が当たった場所に印(プリム)がつくんですよね
なぜ2プリムなんだろう・・・・(・ω・ )? 良くできてるなぁ・・・と感心つつ・・・
これみたいなのを・・・・作りたいっ! とゆうことで・・・・
ちょっと整理w
・弾が当たったところを教えてもらう
・その場所に「弾の跡」となる小さいプリムをREZする
・一定時間が経つと「弾の跡」は消えるようにする
・精神的に余裕があれば、弾のスピードなんかもわかるようにしたいっ
以上の想像を踏まえながら・・・・作業に入ってみましたっ
とりあえず板を出して・・・テクスチャは後でねっ そして・・・
コンテンツに・・・弾の跡となるプリムを仕込んで・・・・と  ̄m ̄ ふふ
問題は・・・LSL・・・
MizさんのLSLの解説を参考にしながら・・・
vector v;
default {
collision_start(integer num_detected) {
v = llDetectedPos(0);
llSay(0, "弾の早さは " + (string)llVecMag(llDetectedVel(0)) + "m/sですっ");
llSay(0, "弾が当たった場所は " + (string)v +"ですっ");
llRezObject("tamanoato", v , ZERO_VECTOR, ZERO_ROTATION, 1);
}
}
↑ これでどおだぁぁっ  ̄m ̄ ふふ
エラーは・・・・なしw <( ̄^ ̄)>
撃ってみるw
バーーーーンっ
((((o゜▽゜)o))) ドキドキ♪
おおお! できたっ!?
あたしってば・・・天才かもっ!? ̄m ̄ ふふ
どれどれ、横から見てみるか・・・
(; ̄ー ̄)...ン?
(; ̄ー ̄)...ン?
(; ̄ー ̄)...ン?
なんで・・・こんなに離れたところにっ!!
だめじゃぁん・・・
単純じゃ・・・ないのね・・・(´;ω;`)ウッ…
その後・・・いろいろやってみるも・・・だめ・・・~~~~~~~(;_ _)O パタ...
衝突判定・・・・
うーん・・・
難しい・・・
でも・・・頑張り・・・・ますっ
同じものを作ったことがあるのですが、ちょっと苦労しました。。
平面と直線の交点を求めるのが基本的な考え方です。コリジョンイベントの中で、座標と速度ベクトルがわかるので、速度ベクトルを単位ベクトルにして直線の式が求まります。回転がかかった的の平面の式を、的の座標と回転角度から求めます。この二つから、的平面上の交点がわかります。あとは、その点が的の上にあるかどうかを判定すれば、おっけ。
ついでに、的の中央からの距離もわかるので、RL射撃の的みたいな点数判定もすぐにできるとおもいます。
がんばってみてくださいね♪
御来訪&ご指導下さいましてありがとうざいますっm(。_。;))m ペコペコ…
製品?の的をチラ見してきたのですが・・・・2プリムで
スクリプトが10個位も入ってるんですよね・・・(;´▽`A``
やはり・・・手前になっちゃいますよね!!(´▽`) ホッ
私だけじゃなかったんだ・・・と思いまして・・・(;´▽`A``
なるほど・・・ベクトル・・・・(o;_ω_)oバタ
検出された位置を補正?してそこへREZするということですよね?(;´▽`A``
あまたの中が・・・パニックですが・・・(;´▽`A``
3D的な発想能力に難あり・・・(;´▽`A``
ですが・・・頂いたヒントを手がかりに頑張りますっ^^
ありがとうございますっ^^
あと、連射時に連続して跡をREZしようと思っても、結構ラグがあって、少しずつ表示される感じになります。これは1スクリプトで、連続してREZしても、自動で一定時間のSleepが入るためです。それを避ける為に、REZするだけのスクリプトをたくさん用意して、親スクリプトから指示を出して、次々と子スクリプトにREZさせると、連続REZがスムーズにできます。これは、第二ステップですねー。
ちなみに私は↓を見て作りました。グーグル先生は偉大です・・・
http://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter06.html
大変参考になりましたm(。_。;))m ペコペコ…
なんとか・・・完成できました~^^
頭の中・・・・ベクトルだらけ・・・です(;´▽`A``
かなり・・・時間かかってしまいましたが・・・(;´▽`A``
いちおかさんのヒントのおかげです♪
ありがとうございました~^^
ワーイ ( ^-^)o-o<※ ☆ パンッ
