これ何て呼びますか

こんにちは、今作っているFlashで初期段階で
いきなり行き詰ってしまい色々と調べてみたんですが
解決出来ずに困っていますのでお助け願えたら幸いです。

Flashでピンボールを作ろうと思っています。ゆくゆくはパチンコ等も作りたいなと思っているんですが分からない事は球を跳ね返す衝突判定(当たり判定)が何もない長方形及び正方形のステージ内なら問題なく重力を持たせた球を跳ね回す事が出来たのですが、障害物や曲面の跳ね返りの方法が分からなくて困っています。ピンボールやパチンコでも曲面が多かったりパチンコなんかはステージ自体が円ですよね。どちらも球を最初に打った時は楕円の形に沿って球が飛んで釘や障害物に当たりながら落ちていくと思うのですが、その球を楕円に沿わす方法や障害物(釘)に球が当った跳ね返り方がどうしても分かりません。文章が下手で上手く伝わっているかどうか分かりませんがご教授ください。

A 回答 (3件)

衝突判定はhitTestか座標で判定するしかないと思います。


座標判定というのは例えばボールと線が、

   ● ボール
   ↓

──────── 線

のような位置関係の場合(ボールは画面下に向かう)、
ボールのy座標が線のy座標より大きくなった場合に衝突したとみなせます。
(flashのy座標は上が0位置)

弧を描いたカーブの場合はまず円全体を考えて
ボールが円の内側にあるか外側にあるかを判断して、
かつx,y座標が弧の位置にあるかを見れば衝突したかどうかがわかると思います。

hitTestを使用する場合はmc(線)とmc(ボール)で衝突判定するよりも
mc(線)と点(ボール)で判定する方が処理が軽いらしいです。
点と言ったのはボールを点で表すという意味ではなく、
ボールの一点(例えば中心部分)と判定するという意味です。

その他にも内積と外積を利用する方法もあるみたいです。

参考URL:http://www.h6.dion.ne.jp/~game296o/COL_main.html
    • good
    • 0
この回答へのお礼

perseさんありがとうございます!
参考URL先も色々とタメになりそうです!
まだそれらをどうやってActionScriptで表すのかは
今の段階ではいまいち分かりませんが1つずつ
基礎から考えて作ってみます!また分からない事があれば
教えてくださいね^^

お礼日時:2006/07/19 20:52

そもそもFlashの問題なのでしょうか?



重力のある環境で、丸い釘に丸いボールが任意の角度から飛んできて、ボールがかするように当たった場合の、ボールの軌道を計算して紙に示すことはできますか?Flashではなく、です。理論まではわかっているんですよね?

物理計算ができないのか、それをActionScriptで表現できないのか、どちらかなぁと思いまして。

この回答への補足

ogupikoさん回答ありがとうございます。
理論…は高校時代にそういえば習ったかなぁぐらいの知識です。
私もそんなに頭が良い方ではないのでボールの軌道を計算して
紙に示すことは出来ますかという問いに自信を持ってyesとは
言えません…ブロック崩しのように縦横方向へのボールの軌道の
計算は理解出来ています。円の反射計算も完璧ではありませんが
全く分からない事もないという感じです。
それをActionScriptで表現するという事が今の私に出来ない
方だと思います。ご面倒かとは思いますが基礎的な事でも
ご教授頂けたら嬉しいです。よろしくお願いします。

補足日時:2006/07/18 19:05
    • good
    • 0

基本的に当たり判定は、hitTest()を使います。


曲面でもなんでも、関係ないです。

http://hakuhin.hp.infoseek.co.jp/main/as/hittest …

かなり参考になると思いますよ。

この回答への補足

mokomichiiさんありがとうございます。
記載されたサイトも以前から勉強させてもらっているんですが
ブロック崩し等の跳ね返りは作れるのですが曲面になると
どうしても上手く球が跳ね返ってくれません。
色々とまた調べてみたら
http://flash.genin.jp/test/collision2.html
ここのサイトの「物体衝突シミュレーション」
のような当たり判定を作りたいのですがこのような自由な線の
当たり判定はどう作っているのでしょうか?色々とお手数かけますが
よろしくお願いいたします。

補足日時:2006/07/17 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!