菱形のあたり判定


 

対惑星レーザーの拡張

6月中にオーバーライドを習得すれば良いと思っていたのですが、大まかに習得できたので続編の制作に本格的に入ろうと思います。まずは簡単そうな対惑星レーザーの拡張作業から。
今回のアプリでは対惑星レーザーの長さを制限してビームサーベル的な攻撃を追加するので新たにレーザーの素材を作成し、それに適用する当たり判定の仕組みを追加しました。
 

菱形のあたり判定

これまでの対惑星レーザーの当たり判定は矩形で、長さを制限しても使い回すことは可能でした。しかしC言語を学ぶという目的もあるので、新しく菱形のあたり判定を持つレーザーにしたかったのです。
矩形の場合はスプライトの4隅の座標を利用してヒットエリアを構成しましたが、菱形の場合は各辺の中点を利用するようにします。しかしレーザーのグロー部分には当たり判定を付けたくなかったので、幅の判定は半分にしました。
というわけで動画のようにグロー部分に触れても被弾しません(被弾すると音が鳴るようにしています)。スプライトの大きさに合わせて計算されるので、将来的には対惑星レーザー以外にも利用できそうです。
 

すり抜け

ゲームの処理は60fpsなので0.1秒(6f)で横幅(640px)を移動すると、1fあたり100px移動することになります。つまり100pxの飛び飛びの移動。ということで動画の後半のように高速で操作するとレーザーをすり抜けることになります。
これは弾幕の器にも存在していた現象で、対処するためには自機の導線と敵弾の導線が交わるかを確認する必要があります。しかし、それは処理負荷が高く弾幕の密度を濃くできなくなるので、今回も無視していきます。
 
 
 

コメントを残す

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


3 × 九 =


*

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