弾幕ゲーム第2弾:矩形のあたり判定

レーザーを追加

丸い玉だけだと寂しいのでレーザーを追加しました。動画だとレーザーの挙動が
おかしいのですが、実機では問題なし。

 

線分と点の距離

レーザーは線なので、あたり判定は「線分と円」の距離で判定できます…が。
spriteから線分の式を算出するのが面倒なので、素直にcocos2d-xに
搭載されているあたり判定のメソッドを使うことにしました…が。
 

回転に対応していない

cocos2d-xの矩形のあたり判定は回転に対応していないことが判明!
ゲーム作成用のフレームワークなのに!
FlashのhitTestのようなメソッドが有っても良さそうなのに無いようです。
しかし以下のサイトを発見。考えることが面倒になっていたので
これを利用することにしました。とても助かりました!
→参考:Cocos2d-xでCCSpriteの当たり判定
 

メモ

今回は数学をする気分ではなかったので「線分と円」のあたり判定について
は諦めましたが、速度的には「こちら」の方が早いのでメモ。
このあたり判定は「線分と円」の距離が求まれば簡単に実現できます。
考え方については以下のページが詳しいです。
→参考:円と線分から多角形と円へ
 
面倒なのはレーザーの線分を求める部分。レーザーのぼやけた部分
にはあたらないようにしたいので、線分はspriteの実体よりも短くする
必要があります。
また傾いているレーザーにも対応するため、短くした線分を回転行列に
通す必要が出てくるでしょう。
このときレーザーのspriteのアンカーポイントを「上部中央」に
すると計算式を簡単にすることができると思う。
→参考:cocos2d入門編 〜anchorPointについて〜
 
しかし私の古いiPodTOuchでも前項の方法で速度低下しなかった
ため、この方法に切り替えることは考えていません。今のところ。
 
 
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


4 × 七 =


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>