貫通というか、すり抜けですね。
全ザコ敵をすり抜けるヤツは、自機弾の一部と敵の当たり判定が出来ていませんでした。これは修正。
で、時々先頭の敵に当らず2番目の敵に当る現象も出ていますが、これは完全にフレームレート20にした弊害です・・・。
頭の中だけで考えるとややこしいので、状況把握と対応策検討の為に図にしてみた。
現在の自機弾の速度は1フレームで約35の距離を移動します。
図の左の状態であった弾が、次の瞬間に右の状態になります。
弾の長さは20なので15ピクセルの無敵地帯発生。
当たり判定は毎フレームごとなので、15ピクセル以下の物が、偶然この隙間に入ってしまった場合に当たり判定を回避してしまいます。
でもまあ、一番小さい敵でも縦横30あるので相手が止まっていた場合は問題なさそうです。
仮に相手がこちらと同じ大きさで、同じ速度で迫ってきた場合は以下のようになります。(合ってるよね・・)
左ではギリギリ当っていない状態。
次のフレームでは右のようになります。
すり抜け成功!成功しても嬉しくない(笑)
次に一番小さい敵(30ピクセル)と自機弾が向かい合って衝突(しようと)した場合。
(青い自機弾の中が30になってますが20の間違いです。一応縦のピクセル数を書いてます)
左がギリギリ当っていない状態で、右が次の瞬間。
やっぱりすり抜けます。
そして、結果的にギリギリすり抜ける相手の移動速度は
15ピクセル/1フレーム
(青い自機弾の中が30になってますが20の間違いです。一応縦のピクセル数を書いてます)
ちなみに今の自機の移動速度が10です。
解決方法
1.敵をでかくする。
2.弾をでかくする。
3.弾の飛行速度を落とす。
4.早い動きの敵は作らない。
5.フレームレートを30にする。
手軽に出来そうなのはこれぐらいでしょうか。
5は負荷を考えると避けたい。
そして全ての元凶は12方向弾( ̄□ ̄;)!!
とりあえず放置してボチボチ考えます
タグ:flash ゲーム