![見出し画像](https://assets.st-note.com/production/uploads/images/102049595/rectangle_large_type_2_6b3074f32d553b16a74db520c954bca1.png?width=1200)
PICO-8でブロック崩しを作ろう(パドルでボールを反射させよう
今回はパドルでボールを反射させてみます。
動画の#6,#7,#8の内容なのですが、動作が気に入らないので書き換えています。※今後の内容次第では再度書き換えるかも
パドルとボールの衝突判定
![](https://assets.st-note.com/img/1680046983833-v5It3oaCsR.png)
![](https://assets.st-note.com/img/1680046998930-3jjmZca8Tg.png)
![](https://assets.st-note.com/img/1680047833731-ckCfK8Qx8f.png)
_update()にball_box()を追加してパドルとボールの衝突判定をおこないます。衝突した場合はballのy方向の速度を逆向きにすることで反射する動作になります。
![](https://assets.st-note.com/production/uploads/images/101430567/picture_pc_783296038beeb56f81fd0c5ef90a3603.gif)
パドルにボールが反射するように動作していますのでこれで終了…と簡単には終わりません。
![](https://assets.st-note.com/production/uploads/images/101430665/picture_pc_5fe182c07239d93e0883be40eadea16b.gif)
パドルのサイドにボールが当たった際、ボールがめり込んでしまうような動作になり反射がうまくいきません。
衝突判定用の関数ball_box()を書き換えてパドルの上下左右のどこに衝突したかまで判定するようにします。
![](https://assets.st-note.com/img/1680153829160-zCI4APagwS.png)
![](https://assets.st-note.com/img/1680154406927-d84yDTpaaN.png)
_update()内のパドルとボールの衝突判定の部分を以上のように書き換えてボールの当たる位置によって反転させる速度方向を変更します。
そのとき単にマイナスをつけて反転するだけでは、ボールがパドルにめり込んだ時に速度が反転し続けて、パドルから出てこなくなることがあります。そこで、単に反転させるのではなく絶対値を取るやり方をしています。
![](https://assets.st-note.com/production/uploads/images/101529456/picture_pc_7143d72c926244ca3e3e8d2a289ace05.gif)
パドルに当たったときの音を作る
壁にボールが当たったときの音をつけましたがパドルに当たったときにも音をつけます。壁に当たったときとは別の音にしてみます。
![](https://assets.st-note.com/img/1680159116969-tDbhfo0DdQ.png)
前はマウスを使ってグラフを描くような感じで効果音を作成しましたが今回は①を選択して数値を入力して作ってみます。
②:音階
③:オクターブ
④:音色
⑤:音量
となっています。
![](https://assets.st-note.com/img/1680573122230-0I1J5SmAqm.png?width=1200)
本日の成果物
この記事が気に入ったらサポートをしてみませんか?