Menu
CoddyTech

파이프에 부딪히기

Coddy Godot 여정의 프로젝트 섹션에 포함된 레슨. 33개 중 23번째.

파이프나 지면에 부딪히면 게임이 끝나야 합니다. 둘 다 main.gd의 한 함수로 이어집니다:

func _on_crash():
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

파이프. 파이프는 위쪽과 아래쪽 절반에 각각 모양이 있는 Area2D입니다. 간격에는 모양이 없습니다. pipe.gd에서 body_entered를 연결하고 hit 신호를 내보냅니다. main.gd는 새 파이프를 추가하기 전에 각 파이프의 hit을 연결합니다.

지면. 지면의 위쪽은 y = 318에 있습니다. 비행체의 가장자리는 가운데에서 12픽셀 떨어져 있으므로, position.y가 306을 넘으면 지면에 닿습니다. 그러면 flyer.gd가 crashed를 내보냅니다.

비행체, 파이프, 타이머는 일시 정지 가능하므로 일시 정지하면 모두 멈춥니다.

challenge icon

챌린지

어려움
  1. pipe.gd에서 signal hit를 추가합니다. _ready에서 body_entered를 연결하고, 몸체가 들어오면 hit를 발생시킵니다.
  2. flyer.gd에서 signal crashed를 추가하고 position.y가 306을 초과하면 이를 발생시킵니다.
  3. main.gd에서 각 파이프의 hit와 비행기의 crashed를 _on_crash에 연결합니다. 그러면 Game Over를 표시하고 게임을 일시 중지합니다.

직접 해보기

extends Node2D

const PIPE = preload("res://pipe.tscn")

func _ready():
	$PipeTimer.timeout.connect(_on_pipe_timer_timeout)

func _on_pipe_timer_timeout():
	var pipe = PIPE.instantiate()
	pipe.position = Vector2(700, randf_range(100, 250))
	$Pipes.add_child(pipe)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

프로젝트의 모든 레슨

직접 연습해 보세요: Godot 플레이그라운드