0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Godot4で3D風2D縦スクロールシューティングゲームを作る 4回目 敵を追加する

Posted at

Godot4.1.3でシューティングゲームを作っていきます。

敵を追加します

 twin bodyという名前の敵を1種類追加します。上から下に直進するのみのキャラクターです。

github

 本記事で実装したものをgithubで公開しています。

twin bodyのglTF2.0形式ファイルをassetsフォルダに配置

 Blenderで敵をモデリングし、twin_body.glbというファイル名で、glTF2.0形式で出力したものを、res://assets/blender/twin_body/twin_body.glbに配置しました。
image.png

twin bodyのシーンとGDScriptを作成する

 res://characterの下に、enemyフォルダを作成し、その中に「twin_body.scn」シーンを作成します。
image.png

 ルートノードはArea3Dにします。子ノードは3つあります。
image.png

  • twin_body
     res://assets/blender/twin_body/twin_body.glbをドラッグしたものです。
     Scaleを2倍にしました。
  • CollisionShape3D
     Shapeは新規BosShape3Dにして、x=3m、z=5mにしました。
  • VisibleOnScreenNotifier3D
     画面外に出たことを検知できるようにしました。

image.png

 ルートノートにスクリプトをアタッチして、下記のように修正します。

extends Area3D

@export var _d_speed_mps = 20.0

func _physics_process(delta):
   global_position += Vector3(0, 0, 1) * _d_speed_mps * delta

func _on_visible_on_screen_notifier_3d_screen_exited():
   queue_free()

 _physics_processメソッドに、画面の上から下に直進する動きを記述しています。
 画面の下はZ軸のプラス方向なので、Zのみ1にしたVector3(0,0,1)を使用します。_d_speed_mpsが1秒あたりに進む速度なので、deltaを掛け算して今周期分の移動量をglobal_positionに足しています。

 画面外に出たことを知るには、VisibleOnScreenNotifier3Dのscreen_exitedイベントを受けるようにします。
 VisibleOnScreenNotifier3Dを選択して、インスペクタの右のノード/シグナルの中にある、screen_exited()をダブルクリックします。ルートノードのtwin_bodyを選択して接続します。
image.png
 _on_visible_on_screen_notifier_3d_screen_exitedメソッドの左に矢印アイコンが表示されると、twin_bodyシーンが画面外に出ると本メソッドが呼ばれるので、queue_free()と書けば、シーンが削除されるようになります。
image.png

twin_bodyの動作確認

 今追加したtwin_bodyの動きを確認するために、一時的にgame.scnにtwin_body.scnを追加して動きを確認します。transform/position.zを-130にして、初期位置を画面の上の方にします。
image.png

 実行すると、twin_bodyが上の方から下に移動します。

image.png

 画面外に出ると消えることも確認します。
 実行中、シーンのリモートを見ると、画面にいるときは、twin_bodyノードが存在しますが、
image.png
 twin_Bodyが画面外に出ると、twin_bodyノードが消えます。
image.png

 以上です。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?