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

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

godotでの弾幕シューティングゲームの作り方について解説しています。

ぜひ参考にしてください。

画面の大きさを設定する

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

プロジェクト>プロジェクト設定を開き、その中にある、「ウィンドウ(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

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

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

次に、CollisionShape2DShapeという項目に、「新規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

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

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

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

Mainシーンを右クリックして、「子シーンをインスタンス化」をクリックしてください。

すると、「子シーンをインスタンス化」という画面になると思います。

そこで、playerシーンをクリックすれば、player子シーンとして追加することができます。

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

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

設定できたら、試しに実行してみましょう。

自機を矢印キーで動かすことができると思います。

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

Bulletシーンを追加する

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

BulletArea2Dシーンを追加して、保存してください。

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

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