鍵のかかったドア
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()では描画が止まるだけです。ドアのコリジョンシェイプは残り、ヒーローを通せんぼし続けます。
チャレンジ
中級鍵を使ってドアを開けましょう。
main.gdで、$DoorZone.body_enteredを関数に接続します。- 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プレイグラウンド