敵の射撃

敵が攻撃できるようになったので、今度は彼らが撃つ対象を与えます。

敵弾シーン

以前プレイヤー用の弾丸を作成したときと同じように、新しいEnemyBulletシーンを作成してください。ここでは詳細な手順は割愛しますが、行き詰まった場合はその部分を参照してください。唯一の違いは、代わりにEnemy_projectile (16 x 16).png画像を使用できる点です。

スクリプトは少し異なります。

extends Area2D

@export var speed = 150

func start(pos):
    position = pos

func _process(delta):
    position.y += speed * delta

VisibleOnScreenNotifier2DArea2Dscreen_exited シグナルと area_entered シグナルをそれぞれ接続してください。

func _on_visible_on_screen_notifier_2d_screen_exited():
    queue_free()

func _on_area_entered(area):
    if area.name == "Player":
        queue_free()

※プレイヤーへのヒットは検出していますが、現時点では何も処理していません。ダメージを与える仕組みを追加した時点で、この問題に対処します。

敵への射撃を追加

敵のスクリプト上部で新しい弾丸をロードします。

var bullet_scene = preload("res://enemy_bullet.tscn")

次に射撃関数を書き換えます。

func _on_shoot_timer_timeout():
    var b = bullet_scene.instantiate()
    get_tree().root.add_child(b)
    b.start(position)
    $ShootTimer.wait_time = randf_range(4, 20)
    $ShootTimer.start()

Main シーンを再生し直すと、ランダムな敵の弾丸が出現するはずです。

戻る次へ