점수와 승리
Coddy Godot 여정의 프로젝트 섹션에 포함된 레슨. 36개 중 20번째.
큰 바위는 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를 추가하세요. 바위가 부서질 때마다 1을 빼고, 큰 바위가 두 개로 쪼개지면 2를 더하세요. 0이 되면You win!을 표시하고 일시 정지하세요.
‘플레이’를 눌러 바위를 모두 없애세요. 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)
프로젝트의 모든 레슨
2프로젝트: 소행성 슈팅 게임
우주선 회전하기엔진 가동하기직접 연습해 보세요: Godot 플레이그라운드