擬似クォータービューの当たり判定について

●クォータービューとは
http://www.tonbi.jp/Game/Essay/036/

●今回の目的
◎今回は擬似クォータービューを扱う
◎擬似クォータービューとは、パースがついた一枚絵に当たり判定をつけたもの
◎前後関係を表現し、オブジェクト、キャラクタを配置することが目的
あと立体感のある表現とか


●今回の目的ではないところ
×3次元的な要素があるマップを創る
ゲームに高さの要素(高所からの攻撃)はとりいれない。
×攻撃判定などは奥行きはない
見たままの判定じゃないと回避できない。


●擬似クォータービューに当たり判定をつけた例
赤い丸、もしくは赤い四角が当たり判定。パースの付いた背景にたいして
当たり判定をつけるのが今回の問題。


●当たり判定の形状いろいろ?
A:矩形を用いる
角の判定が甘くなる。
配置する数は多くなる。
めり込み時の計算が楽


B:円を用いる
角の判定は矩形よりまし
配置する数は多くなる。
めり込んだときどちらに弾くかの判定が難しい?


C:菱形を用いる
3Dでの当たり判定を使うか、座標変換が必要。
配置する数が減る。
線と線の交差判定?
http://d.hatena.ne.jp/gunsyu3/20100501
http://sourceforge.jp/projects/dxruby/wiki/%E3%82%AF%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A7%E8%83%8C%E6%99%AF%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B
http://www.werk-zwei.jp/blog/index.php?e=138
http://www.abars.biz/lecture/online/4.htm

D:楕円を用いる
回転出来る楕円なら使えるか?
楕円の判定はすごくめんどくさい。
3Dにしてポリゴンで判定したほうがよいと思われる。
↓いるとはてしなく道のりは長いし、処理にも時間がかかる。
http://marupeke296.com/COL_2D_No7_EllipseVsEllipse.html
http://gmr.blog.shinobi.jp/Entry/621/


E:線を用いる
配置する数が減る。
複雑な形状でも接触判定できる。
http://hakuhin.jp/as/collide.html#COLLIDE_02


接触時の判定について
当たり判定を丸にしようが、四角にしようが、線で書こうが、当たり判定にあたった時に止まるという実装では、
図の白線のように斜め移動時つっかかりがあり、手間がかかる。


あたった時にベクトルを補正して移動するようにすれば、つっかかりなく移動することができる。


●攻撃判定について
攻撃判定は奥行きなく、二次元平面に四角を置く。
射程や、範囲攻撃は円で計算する。この時には中心座標と半径が必要。
斜めの攻撃判定は複数の四角を用いる。


●サンプルプログラム
丸、四角の当たり判定ベンチマーク
マウスをクリックすると10個物体を追加します。

四角バージョン
http://funnystep.sakura.ne.jp/sample/SandBoxRectHitCheck.swf
丸バージョン
http://funnystep.sakura.ne.jp/sample/SandBoxHitCheck.swf


丸のほうが大量における感じがします。



●参考文献

当たり判定とその応答、また当たり判定の高速化などの情報がかなり詳細に記載されている。
ほかにもシーン遷移、キャラクターの移動、2D,3D,ローディングなど、
実践的な要素が多々記載されている。


既存のゲームプログラム本はDirectXのリファレンスになりがちなので、貴重な一冊。
800ページ超でプログラムの全ソースもあり、個人的には超お買い得な一冊だった。