※この連載の全ての記事は、タグ「ビッグカツ」の検索一覧から探すことができます。
※この連載で作ったゲームは「BigBreakOut(ゲームの作り方の記事付き) | フリーゲーム投稿サイト GodotPlayer」でプレイできます。
昔から人気の駄菓子「ビッグカツ」のフリー素材画像が公開されたので、無料・軽快な 2D / 3D 用のゲームエンジン Godot Engine 4 を使って、ビッグカツ画像を使ったブロック崩しを作成します。
「ビッグカツブロック崩し」作成の第2回は、ビッグカツのフリー素材画像が表示されているパドル(バー)を←→キーで左右に移動させる GD スクリプトを作成して、パドルシーンのルートノードに割り当てて、エディタ上で実行して左右に動くかをテストします。
![](https://compota-soft.work/wp1/wp-content/uploads/2024/09/GodotEngine4.3-公式サイトの一部-20240911.png)
※ GodotEngine 4.3 を使用しています。.NET 版ではありません。
※スクリプトは自己責任でご使用ください。
前回の記事
前回は、プロジェクトの作成とウィンドウサイズの設定、パドル(バー)のシーンを作成して、ビッグカツのフリー素材画像をプロジェクトに追加してパドルの画像として割り当て、その画像に合わせた四角い当たり判定領域を設定しました。
パドルを左右に動かすスクリプトの作成
前回作成した Paddle ルートノード(CharacterBody2D クラス)をシーンドックで選択してから、その右上にある+がついたアイコンの「選択したノードにしんきまたは既存のスクリプトをアタッチする。」ボタンを押します。
![Godot4 ビッグカツブロック崩し パドルのシーンの作成7](https://compota-soft.work/wp1/wp-content/uploads/2024/12/Godot4-ビッグカツブロック崩し-パドルのシーンの作成7.png)
作成して、そのノードに割り当てるスクリプトのファイル名・ファイルパスなどを設定して「作成」ボタンを押します。
※デフォルトの paddle.gd で作成します。
![Godot4 ビッグカツブロック崩し パドルのシーンの作成8](https://compota-soft.work/wp1/wp-content/uploads/2024/12/Godot4-ビッグカツブロック崩し-パドルのシーンの作成8.png)
paddle.gd が作成され、ウィンドウ中央上の Script ワークスペースに自動的に切り替わり、スクリプトが表示されました。
最初から、基本的な処理が書かれています。
CharacterBody2D クラスのスクリプトの場合は
- 空中では自由落下
- スペースキーまたはエンターキーが押されたらジャンプ
- ←→キーで左右に移動
- 上記で決めた動きを、障害物にぶつかったら止まるように物理演算を行いながら実行
といった処理が最初から書かれています。
![Godot4 ビッグカツブロック崩し パドルのシーンの作成9](https://compota-soft.work/wp1/wp-content/uploads/2024/12/Godot4-ビッグカツブロック崩し-パドルのシーンの作成9-1024x603.png)
そのスクリプトに、以下のスクリプトを上書きします。
※詳細についてはスクリプト内のコメントを参照してください。
extends CharacterBody2D
class_name Paddle
## 操作するパドル(バー)のスクリプトです。
# パドル(バー)が横に移動する際の速度です。
const SPEED = 300.0
# _physics_process は、物理的な相互作用を安定させるために、
# 可能な限り固定時間間隔(デフォルトでは毎秒60回)で呼び出されます。
# この間隔は、プロジェクト設定の Physics -> Common-> Physics Fps で変更できます。
# [param delta] は前回の _physics_process 関数が呼び出されてからの経過時間(ミリ秒)です。
func _physics_process(delta):
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
# ← →キーなど左右に移動する入力を取得します。
var direction = Input.get_axis("ui_left", "ui_right")
# 左右いずれかへの入力がある場合は、その方向に向けて SPEED の値だけ加速します。
if direction:
velocity.x = direction * SPEED
# 左右どちらへの入力もない場合は、加速度を 0 にして止まります。
# move_toward を使うことで、 veliocity.x の値を SPEED を最大値として 0 に近づけます。
# これにより、第3引数を小さくすればするほど、少し滑ったような感じで少しずつ減速します。
# 現状は、移動に使う加速度の SPEED と同じ値なので、入力がなければすぐに 0 になり、止まります。
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
# 衝突したら止まるように物理演算を行いながら、設定された velocity ベクトルの方向と量で移動します。
move_and_slide()
return
_pysics_process イベント関数についての詳細は「アイドル処理と物理処理 — Godot Engine (4.x)の日本語のドキュメント」を参照してください。
パドルのシーンの保存
シーンは Ctrl + S キーなどで保存できます。
最初に保存する際は、シーンの名前を入力して「保存」ボタンを押します。
![Godot4 ビッグカツブロック崩し パドルのシーンの作成10](https://compota-soft.work/wp1/wp-content/uploads/2024/12/Godot4-ビッグカツブロック崩し-パドルのシーンの作成10.png)
テスト
F6 キーで現在のシーンを実行して、矢印キーの左右を押すと、パドルが移動しました。
まとめ
「ビッグカツブロック崩し」作成の第2回は、ビッグカツのフリー素材画像が表示されているパドル(バー)を←→キーで左右に移動させる GD スクリプトを作成して、パドルシーンのルートノードに割り当てて、エディタ上で実行して左右に動くかをテストしました。
参照サイト Thank You!
- Godot Engine – Free and open source 2D and 3D game engine
- Xユーザーのビッグカツといか姿フライのすぐる【公式】さん: 「使いどころは思いつきませんが、フリー素材としてどうぞご自由にお使いくださいませ! https://t.co/8F9q3hS02b」 / X
- CharacterBody2D — Godot Engine (4.x)の日本語のドキュメント
- Sprite2D — Godot Engine (4.x)の日本語のドキュメント
- CollisionShape2D — Godot Engine (4.x)の日本語のドキュメント
- アイドル処理と物理処理 — Godot Engine (4.x)の日本語のドキュメント
記事一覧 → Compota-Soft-Press
コメント