【Godot】弾幕シューティングゲームの作り方①

この記事は約7分で読めます。

godot4での弾幕シューティングゲームの作り方について解説しています。ぜひ参考にしてください。

画面の大きさを設定する

まずは、画面の大きさを縦長に設定しましょう。

プロジェクト>プロジェクト設定を開き、その中にある、「ウィンドウ(window)」という項目を探してください。そして、その中にある「サイズ」から、サイズを設定しましょう。サイズは、480×720にしてください。

これで、画面の大きさが縦長になったと思います。

Mainシーンを作る

次に、ゲームのメインとなるMainシーンを追加しましょう。。MainシーンはNode2Dとして追加してください。

そして、その子ノードに「ColorRect」を追加し、Layout>Transformからサイズを480×720と設定してください。色は、「005b5a96」がおすすめです。

Mainシーンは、

Main
ColorRect

という構成になったと思います。

自機を作る

playerシーンを追加する

まずはplayer(自機)シーンを追加しましょう。Area2Dを追加して、「Player」と名前を付けてください。追加したら保存しておいてください。

そして、playerの子ノードに「CollisionShape2D(衝突形状)」、「ColorRect(自機の形)」を追加してください。

現在のシーンツリーは、

Player
CollisionShape2D
ColorRect

となっていると思います。

衝突形状と自機の形を設定する

次に、CollisionShape2DのShapeという項目に、「新規RectangleShape」を追加して、大きさを40×40にしてください。

「ColorRect」は、大きさを40×40にして、位置は真ん中になるように-20,-20にしてください。色は「3aa8ff(薄い青色)」がおすすめです。

自機を矢印キーで動かせるようにする

次に、自機を矢印キーで動かせるようにしましょう。

Playerにスクリプトをアタッチして、以下のようなコードを入力してください。

extends Area2D

var speed = 5

func _physics_process(delta): #動き
	if Input.is_action_pressed("ui_right") and position.x <= 480:
		position.x += speed
	
	if Input.is_action_pressed("ui_left") and position.x >= 0:
		position.x -= speed
	
	if Input.is_action_pressed("ui_up") and position.y >= 0:
		position.y -= speed
	
	if Input.is_action_pressed("ui_down") and position.y <= 720:
		position.y += speed
extends Area2D

var speed = 5

func _physics_process(delta): #動き
if Input.is_action_pressed("ui_right") and position.x <= 480:
position.x += speed

if Input.is_action_pressed("ui_left") and position.x >= 0:
position.x -= speed

if Input.is_action_pressed("ui_up") and position.y >= 0:
position.y -= speed

if Input.is_action_pressed("ui_down") and position.y <= 720:
position.y += speed

条件分岐の「and ~」のところで、画面外に出ないようにしています。

playerシーンをMainシーンの子ノードにする

次に、今作ったplayerシーンをMainシーンの子シーンとして追加しましょう。

Mainシーンを右クリックして、「子シーンをインスタンス化」をクリックしてください。すると、「子シーンをインスタンス化」という画面になると思います。そこで、playerシーンをクリックすれば、playerを子シーンとして追加することができます。

そして、playerシーンの位置をを240,500にしてください。

ここまで出来たら、Mainシーンをメインシーンとして設定してください。

設定できたら、試しに実行してみましょう。自機を矢印キーで動かすことができると思います。

弾を発射できるようにする

Bulletシーンを追加する

次に、自機から弾を発射できるようにしましょう。

Bullet(Area2D)シーンを追加して、保存してください。追加したら、playerシーンと同じように、衝突形状と形を「CollisionShape2D」、「ColorRect」で設定してください。大きさはplayerシーンの4分の1にしてください。

弾が上に飛んでいくようにする

Bulletシーンを追加できたら、スクリプトをアタッチして、弾が飛んでいくコードを入力しましょう。

extends Area2D

var speed = 20

func _physics_process(delta):
position.y -= speed #上に飛ばす

ただ上に飛ばすだけなので、上のような簡易的なコードで実現できます。

spaceというアクションを追加する

次に、プロジェクト>プロジェクト設定>インプットマップから、新しい「space」というアクションを追加してください。

追加できたら、spaceの中に、スペースキーの入力を追加しましょう。

  1. 追加されたアクション「space」の左にある「+」ボタンを押す
  2. 「イベントの設定」という画面が開いたらスペースキーを押す
  3. 上の画像のような状態になったら、OKを押す

このような手順で、スペースキーの入力を、アクション「space」に追加することができます。

これで、スペースキーが押されたときに、アクション「space」が反応するようになります。

playerシーンから弾を生成する

次に、自機から弾を発射できるようにしましょう。player.gdを、以下のように変更してください。変更するところには黄色い線を付けています。

extends Area2D

var speed = 5

const bullet = preload("res://bullet.tscn") #弾を取得

func _physics_process(delta):
if Input.is_action_pressed("ui_right") and position.x <= 480:
position.x += speed

if Input.is_action_pressed("ui_left") and position.x >= 0:
position.x -= speed

if Input.is_action_pressed("ui_up") and position.y >= 0:
position.y -= speed

if Input.is_action_pressed("ui_down") and position.y <= 720:
position.y += speed

if Input.is_action_just_pressed("space"): #スペースキーが押されたとき
var bullet1 = bullet.instantiate()
 #弾を生成
bullet1.position = position #弾の位置を自機の位置にする
get_parent().add_child(bullet1)
 #弾を親から発射する

ここまでできたら、実行してみてください。スペースキーを押すと、プレイヤーから弾が発射されると思います。

ここまでで、第1回は終了です。第2回はこちらです。

【Godot】弾幕シューティングゲームの作り方②
Godot4での弾幕シューティングゲームの作り方について掲載しています。ぜひ参考にしてください。第1回はこちらです。ボスを作るBossシーンを追加するまずは、ボス(敵)を作りましょう。Boss(Area2D)シーンを追加して、保存してくださ...

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