Menu
CoddyTech

벽돌 깨기

Coddy Godot 여정의 프로젝트 섹션에 포함된 레슨. 36개 중 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

챌린지

중급

공으로 벽돌을 부수세요.

  1. _on_body_entered에서 그룹 bricks에 속한 바디에 대해 elif를 추가하세요.
  2. body.smash()를 호출하세요.
  3. 공이 벽돌의 중간보다 아래에 있으면 아래로, 위에 있으면 위로 튕기게 하세요.

‘플레이’를 누르세요. 벽돌이 하나씩 부서집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

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)

프로젝트의 모든 레슨

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