TeamworkCastが配信している、PICO-8のチュートリアル動画の解説を連載中です。
前回はこちら。
そして今回の動画はこちらになります。
【解説メモ】
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座標が、パッドの右側に入ったなら右側の外に、パッドの左側に入ったなら左側の外に出す
【自分の感想】
これで、ボールとの当たり判定動作で、おかしなところが修正された
まだ、発見されていないバグがあるかもしれないが、こうやってブラッシュアップしていくんだな
コメント