Menu
CoddyTech

벽돌 깨기

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

공이 벽돌 사이를 통과합니다. 벽돌도 물리 객체이며, 각 벽돌은 bricks 그룹에 속합니다. is_in_group를 사용하면 벽돌과 패들을 구분할 수 있습니다.

각 벽돌에는 smash() 함수가 있습니다. 이 함수는 벽돌을 불꽃으로 터뜨리고 제거합니다.

elif body.is_in_group("bricks"):
	body.smash()

그런 다음 공은 벽돌의 중심에서 튕겨 나갑니다. 벽돌보다 아래에 있으면 아래로, 위에 있으면 위로 튕겨 나갑니다. 공은 틈 사이로 빠져나온 뒤 벽돌의 위쪽에서 벽돌에 부딪힐 수도 있습니다.

if position.y > body.position.y:
	velocity.y = abs(velocity.y)
else:
	velocity.y = -abs(velocity.y)

velocity.y를 뒤집지 마세요. 공이 벽돌 두 개에 동시에 닿으면 두 번 뒤집혀 서로 상쇄됩니다.

challenge icon

챌린지

중급

_on_body_entered에서 그룹 bricks에 속한 바디를 처리하는 elif를 추가하세요.

  1. body.smash()를 호출하세요.
  2. 공이 벽돌의 중앙보다 아래에 있으면 아래로, 위에 있으면 위로 튕기게 하세요.

직접 해보기

extends Area2D

var velocity = Vector2(110, -280)

func _ready():
	body_entered.connect(_on_body_entered)

func _physics_process(delta):
	position += velocity * delta
	if position.x < 8 or position.x > 632:
		velocity.x = -velocity.x
	if position.y < 42:
		velocity.y = -velocity.y

func _on_body_entered(body):
	if body.name == "Paddle":
		velocity.x = (position.x - body.position.x) * 5
		velocity.y = -abs(velocity.y)
quiz icon실력 점검

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

프로젝트의 모든 레슨

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