【12】いっしょにまなぼう!

Breakout #12 - Debugging - Pico-8 Hero PICO-8
Breakout #12 - Debugging - Pico-8 Hero

 TeamworkCastが配信している、PICO-8のチュートリアル動画の解説を連載中です。

前回はこちら

そして今回の動画はこちらになります。

Breakout #12 – Debugging – Pico-8 Hero
Breakout #12 – Debugging – Pico-8 Hero

【解説メモ】

2つのブロックに同時に当たると、跳ね返らず すり抜けてしまう問題
これは、2つのブロックが同時に当たるということは、1つのブロックの当たり判定で向きが反転するが、もう1つのブロックの当たり判定でも反転するので、そのままの方向となり、すり抜けてしまうことになる。

function update_game() 内に local brickhit を加える

for i=1,#brick_x do 〜 end の外に brickhit=false を加える

if deflx_ball_box( 〜 ) 〜 end の後に brickhit=true を加える

if not(brickhit) then 〜 end の中に if deflx_ball_box( 〜 ) 〜 end を入れる

パドルの中にボールが入ってしまうと、パドル内でボールが跳ね回ってしまう問題

パドルにボールが入ってしまったかをチェックする時に、パドルの正面から入ったか、横から入ったかをチェックする必要がある。

それには、function deflx_ball_box(bx,by,bdx,bdy,tx,ty,tw,th) を使って調べられる

この関数の戻り値( true か false )で true なら横、false なら正面からボールが入ったことがわかる

正面からボールが入ったら、ボールの中心のY座標がパッドのY座標と比べて、小さければ前側のパッドの外に、大きければ後ろ側のパッドの外にボールを出す

側面からボールが入った時は、ボールの中心のX座標が、パッドの右側に入ったなら右側の外に、パッドの左側に入ったなら左側の外に出す

【自分の感想】

これで、ボールとの当たり判定動作で、おかしなところが修正された

まだ、発見されていないバグがあるかもしれないが、こうやってブラッシュアップしていくんだな

コメント

タイトルとURLをコピーしました