自機の当たり判定を四角形にしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
光翼型近接支援残酷超初心者

自機の当たり判定を四角形にしたい

#1

投稿記事 by 光翼型近接支援残酷超初心者 » 15年前

当たり判定の定義のしかたを前の質問でいろいろ教えてもらいましたが、今回も同じ様な質問をさせていただきます。


自分の改造龍神録のSTGの自機は「横長」なので、龍神録と同じく円形の当たり判定だと先端などに当たり判定が付かなくなってしまいます。

そこで、タイトル通り自機の当たり判定を四角形(長方形)にしたいのですが、どう CRANGE を定義すればよろしいのでしょうか?

個人的には、フィールドの領域の判定と同じで、左上の座標を決めて、そこからxに~・yに~、…………という風にしたいのですが、可能でしょうか?


連続で同じような質問をしてしまってすみません。ですが、前回のものとはとても若干違った内容のような気がしたので、スレ立てさせて頂きました。

if文ぐらいしか知らない自分ですが、どうかお願いします。

fatens

Re:自機の当たり判定を四角形にしたい

#2

投稿記事 by fatens » 15年前

CRANGEは自機の当たり判定の円の半径であるため、
それをどう定義しても当たり判定を長方形にはできないでしょう。


>左上の座標を決めて、そこからxに~・yに~、…………という風にしたい

龍神録では自機や敵の座標は画像の中心なので、
中心から左右に x 、上下に y とした方が変更が少なくてすむと思います。


http://www.c3.club.kyutech.ac.jp/gamewi ... ontent_1_4
↑矩形を用いた当たり判定

http://www.c3.club.kyutech.ac.jp/gamewi ... ontent_1_2
↑龍神録はこっち
画像

光翼型近接支援残酷超初心者

Re:自機の当たり判定を四角形にしたい

#3

投稿記事 by 光翼型近接支援残酷超初心者 » 15年前

???

書いてある事は~、……なんとなく分かるのですが。

低脳の自分には、龍神録の中にどのように組み込めばいいのかが…………。



とりあえず、敵弾の当たり判定はそのまま shot.bullet[n] を使えばいいんですよね(ホントに?

それで、 if(x*x+y*y<r*r)//当たり判定内なら を if(X0 < X3 && X2 < X1 && Y0 < Y3 && Y2 < Y1) にすればいいのでしょうか?

それにおっしゃっていた自機当たり判定の「左右に x 、上下に y」はどこで定義すればいいのですか?

fatens

Re:自機の当たり判定を四角形にしたい

#4

投稿記事 by fatens » 15年前

>if(x*x+y*y<r*r)//当たり判定内なら を if(X0 < X3 && X2 < X1 && Y0 < Y3 && Y2 < Y1) にすればいいのでしょうか?

先のサイトはあくまでイメージです。
時間がなく実装例を示せないのですが一部分の変更では無理です。


今思ったのですが、自機を左右2つに分けてそれぞれ円の当たり判定を用いれば
それなりに判定できるのではないでしょうか?

私が間違っていたりもっと良いアイデアがあればどなたかお願いします。

Dixq (管理人)

Re:自機の当たり判定を四角形にしたい

#5

投稿記事 by Dixq (管理人) » 15年前

自機の当たり判定範囲だけ長方形にしたいということでしょうか。
敵の弾のあたり判定範囲は円である為、長方形と円とのあたり判定を計算する必要があります。

長方形と円のあたり判定はちょっとややこしいです。
http://www.google.co.jp/search?hl=ja&q= ... a&aq=f&oq=
この辺参考になるかもしれません。

例えば龍神録の館ではこのように計算しています。
http://dixq.net/rp/34.html

しかし長方形といっても、別に必ず長方形であたり判定計算をしなくてもいいと思います。
円と円のあたり判定の方が便利なのなら、円を組み合わせたらいいのです。
画像

いい加減でよければこれでだいたい長方形の範囲は網羅出来ました。
静止したものと静止したもののあたり判定ならこれでは困るかもしれませんが、
物体は動いているわけですから、少々カバーしていない部分があってもこれで十分な場合が多いです。

もっと言えばこんな複雑なあたり判定だとしても

画像

円を組み合わせることで大体カバーすることが出来ます。

画像

もっと正確に1ピクセル単位であたり判定を計算したければ
あたり判定の計算を行う弾などに白黒のドット絵を用意してやり、画像のピクセル単位で計算すれば、
かなり正確なあたり判定が計算出来るでしょう。

dic

Re:自機の当たり判定を四角形にしたい

#6

投稿記事 by dic » 15年前

http://ja.wikipedia.org/wiki/%E5%86%86% ... F%E9%A1%8C
円を用いて正確な正方形を描くことは不可能であると証明されてます
近いものなら描けます

光翼型近接支援残酷超初心者

Re:自機の当たり判定を四角形にしたい

#7

投稿記事 by 光翼型近接支援残酷超初心者 » 15年前

>自機を左右2つに分けてそれぞれ円の当たり判定を用いれば
>円を組み合わせたらいいのです

あっ、ソレ、ビッグカメラで立ち読みした本で見た事あります。


えっと、つまり。当たり判定を二つ(またはそれ以上)用意して、それぞれを計算すれば良いんですね!

でも、どうやって二箇所(以上)に定義すればいいのでしょう?

CRANGE とかで二回定義しても、結局画像の中心なので意味無いですよね?

閉鎖

“C言語何でも質問掲示板” へ戻る