Menu
CoddyTech

점수와 승리

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

큰 바위는 20점, 작은 바위는 50점의 가치가 있습니다. _on_rock_broken은 크기를 알고 있으므로 점수를 더하고 $HUD/Score를 업데이트합니다.

바위가 남아 있지 않으면 승리합니다. 개수를 4에서 시작합니다. 바위가 부서질 때마다 하나를 빼고, 큰 바위가 쪼개지면 둘을 더합니다:

if rock.size == 2:
	rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
	$HUD/Message.text = "You Win!"
	get_tree().paused = true

여기서 새 바위 두 개의 개수를 세고, spawn_rock에서는 세지 마세요. spawn_rock은 프레임 끝에서 실행되므로, 마지막 작은 바위 두 개가 생기기 전에 개수가 0이 됩니다.

바위, 총알, 우주선은 일시 정지 가능합니다. Main은 항상 실행됩니다.

challenge icon

챌린지

어려움

main.gd에서:

  1. var score = 0을 추가하고 시작할 때 Score: 0을 표시합니다.
  2. 큰 바위가 부서지면 점수에 20을 더하고, 작은 바위가 부서지면 50을 더합니다. 새 점수를 표시합니다.
  3. var rocks_left = 4를 추가하고 표시된 대로 개수를 셉니다. 0이 되면 You Win!을 표시하고 게임을 일시 정지합니다.

직접 해보기

extends Node2D

const ROCK = preload("res://rock.tscn")

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)

func spawn_rock(where, velocity, size):
	var rock = ROCK.instantiate()
	rock.position = where
	rock.velocity = velocity
	rock.size = size
	rock.broken.connect(_on_rock_broken)
	add_child(rock)

func _on_rock_broken(rock):
	if rock.size == 2:
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
quiz icon실력 점검

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

프로젝트의 모든 레슨

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