Part 3 の今回は、壁を作って、ボールがその壁に衝突したら跳ね返るようにしていく。ただし、画面下部には壁は作らずにボールが落ちるようにする。

それでは前回に引き続きブロック崩しを開発していこう。


Memo:
過去のシリーズをまだご覧になっていない方は、そちらを先にご覧いただくことをおすすめします。
Godot で作るブロック崩し


壁を作る

壁をゲーム画面のギリギリ外側に作っていく。シーンドックで「Game」ノードを選択して、壁となる子ノードを追加していこう。
Gameノードを選択

今回は「StaticBody2D」を選択して「作成」をクリックする。
StaticBody2Dを作成

「Game」ノードに追加された「StaticBody2D」ノードの名前を「Wall」に変更しておく。右側に⚠️が表示されているのでクリックしてみよう。
Wallに名前変更

以下の警告メッセージが表示される。
警告を表示

メッセージの通り、次は「Wall」ノードの子ノードとして「CollisionPolygon2D」を追加する。
CollisionPolygon2Dを作成

シーンドックを見ると「Wall」ノードの⚠️は消えたが、今度は「CollisionPolygon2D」の右側に⚠️が表示されている。クリックしてみよう。
シーンドックで警告をクリック

「CollisionPolygon2D」が空だから衝突の判定ができないという内容のメッセージだ。ということでこれから「CollisionPolygon2D」に衝突を判定するための形を作っていく。
警告を表示

「CollisionPolygon2D」ノードでコリジョンの形を作るには、ツールバーの右端にある3つのアイコンの機能を使う。ツールの機能は左から順番に以下の通りだ。これらのアイコンは「CollisionPolygon2D」ノードを選択している場合のみツールバーに表示される。

  • 点を作成する
  • 点を編集する
  • 点を消す

といっても、うまく行けば一番左のアイコン(点を作成する)だけで済む。

CollisionPolygon2Dの点の編集ツール

この後の作業をやりやすくするために、スマートスナップは無効にして、グリッドスナップを有効にしよう。
ピクセルスナップ無効グリッドスナップ有効

慎重に作業する必要があるが、とにかく「点を作成する」ツールを使って壁の角になる部分に点を打つようにして形を作っていく。(0, 0)など分かり易いポイントから始めて、ゲーム画面の端が壁の内側と重なるようにする。壁の幅は1グリッド分(8 pixel)でもいいが、2D ワークスペース上で見やすくなるように今回は2グリッド分を壁の厚みとした。

点を打つ場所が少しズレたとしても、気にせず一旦少しいびつな形の壁を作り切ってしまおう。あとで「点を編集する」または「点を消す」ツールで修正するのが効率的だ。
点を打ってポリゴンで形を作る

「CollisionPolygon2D」ノードから⚠️が消えた。
シーンドックを確認

それではプロジェクトを実行してみよう。
プロジェクトの実行

期待通り、上と左右の壁にボールが跳ね返った。そして、ボールが画面下部に到達するとそのまま画面外に落ちていった。大成功だ。
デバッグパネルで画面確認



おわりに

Part 3 はここまでで終了だ。今回は少し短いチュートリアルだったが、次回はついにブロックのオブジェクトを作って、それを画面上に配置し、ボールが当たったらブロックが消える仕組みを作っていく。