Menu
CoddyTech

크고 작은 바위

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

큰 바위만 분열해야 합니다. 각 바위에 size를 지정하세요. 큰 바위는 2, 작은 바위는 1로 설정하고, rock.gd의 _ready에서 다음과 같이 크기를 그립니다: scale = Vector2.ONE * size * 0.5.

spawn_rock에도 크기를 전달합니다. add_child(rock) 전에 rock.size를 설정하세요. _ready는 add_child 안에서 실행되므로, 그 이후에 크기를 설정하면 스케일을 정하기에는 너무 늦습니다.

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)

작은 바위는 그냥 부서집니다.

challenge icon

챌린지

어려움

큰 바위는 쪼개지고 작은 바위는 부서지게 만드세요.

  1. rock.gd에서 var size = 2를 추가하고, _ready에서 scale = Vector2.ONE * size * 0.5로 설정하세요.
  2. spawn_rock에 size를 전달하고, add_child 전에 rock.size를 설정하세요. 처음 4개의 크기는 2로 설정하세요.
  3. rock.size == 2일 때만 바위를 크기가 1인 두 개로 쪼개세요.

‘플레이’를 누르고 바위를 쏘세요. 큰 바위는 쪼개지고 작은 바위는 부서집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

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)))

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

func _on_rock_broken(rock):
	spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5)
	spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5)

프로젝트의 모든 레슨

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