벽돌 깨기
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를 뒤집지 마세요. 공이 벽돌 두 개에 동시에 닿으면 두 번 뒤집혀 서로 상쇄됩니다.
챌린지
중급공으로 벽돌을 부수세요.
_on_body_entered에서 그룹bricks에 속한 바디에 대해elif를 추가하세요.body.smash()를 호출하세요.- 공이 벽돌의 중간보다 아래에 있으면 아래로, 위에 있으면 위로 튕기게 하세요.
‘플레이’를 누르세요. 벽돌이 하나씩 부서집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
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 플레이그라운드