점수와 승리
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은 항상 실행됩니다.
챌린지
어려움main.gd에서:
var score = 0을 추가하고 시작할 때Score: 0을 표시합니다.- 큰 바위가 부서지면 점수에 20을 더하고, 작은 바위가 부서지면 50을 더합니다. 새 점수를 표시합니다.
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)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
프로젝트의 모든 레슨
직접 연습해 보세요: Godot 플레이그라운드