Menu
CoddyTech

鍵のかかったドア

CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 31/36。

Doorが階段への道をふさいでいます。これはStaticBody2Dなので、move_and_slideによってヒーローはその場所で止まります。その手前にはDoorZoneがあります。これはドアより少し幅の広いArea2Dなので、ヒーローはまずここに入ります。

鍵を持った状態でヒーローがゾーンに入ると、ドアが開きます。

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

ゾーンも削除しましょう。そうしないと、ヒーローが再びゾーンに入ったとき、$Doorはすでに存在しないため、ゲームがノードが見つかりませんというエラーで停止します。

queue_free()でドアを削除しましょう。hide()では描画が止まるだけです。ドアのコリジョンシェイプは残り、ヒーローを通せんぼし続けます。

challenge icon

チャレンジ

中級

鍵を使ってドアを開けましょう。

  1. main.gdで、$DoorZone.body_enteredを関数に接続します。
  2. bodyが入ってきて、has_keyがtrueの場合、$Doorと$DoorZoneを削除します。

「プレイ」を押して、鍵を取り、ドアまで歩きましょう。ドアが開きます。その後、「確認」を押します。

自分で試してみよう

extends Node2D

var has_key = false

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)

func _on_key_body_entered(body):
	has_key = true
	$Key.queue_free()
	$HUD/KeyIcon.visible = true

プロジェクトのすべてのレッスン

自分で練習してみよう: Godotプレイグラウンド