벽돌깨기에서 공은 들어온 각도대로 튕기지 않습니다
벽돌깨기를 하다 보면 이상한 순간이 옵니다. 공이 거의 수직으로만 오르내려서 양쪽 구석 벽돌에는 닿지도 않습니다. 패들은 계속 받아내는데 판이 안 끝납니다. 반대로 어떤 판에서는 공이 사방으로 튀어 손쓸 새 없이 정리되기도 합니다.
운의 차이가 아닙니다. 이 게임의 패들 반사는 거울처럼 작동하지 않습니다. 공이 어느 방향에서 들어왔는지는 계산에 들어가지 않고, 패들의 어느 지점에 맞았는지 하나만 봅니다. 그래서 벽돌깨기는 반사신경 게임이라기보다 조준 게임에 가깝습니다.

맞은 위치가 나가는 각도를 정합니다
공이 패들에 닿는 순간 게임은 먼저 이렇게 묻습니다. 패들 왼쪽 끝에서부터 몇 퍼센트 지점에 맞았는가. 왼쪽 끝이면 0, 정중앙이면 0.5, 오른쪽 끝이면 1입니다. 이 값 하나에서 나가는 각도가 바로 나옵니다.
중앙에서 벗어난 정도에 비례해 각도가 커지는 구조입니다. 정중앙에 맞으면 각도는 0이 되어 똑바로 위로 올라갑니다. 왼쪽으로 치우칠수록 왼쪽으로, 오른쪽으로 치우칠수록 오른쪽으로 꺾입니다. 들어온 방향은 여기 어디에도 쓰이지 않습니다.
이게 왜 중요하냐면, 현실의 공과 정반대이기 때문입니다. 실제로 공을 벽에 비스듬히 던지면 들어간 각도만큼 반대로 나갑니다. 왼쪽에서 들어오면 오른쪽으로 나가는 식입니다. 그런데 이 게임의 패들은 그걸 완전히 무시합니다. 왼쪽에서 급하게 떨어진 공이라도 패들 오른쪽 끝에 맞으면 그대로 다시 오른쪽으로 꺾여 나갑니다.
덧붙이면 벽에서는 진짜 반사가 일어납니다. 좌우 벽에 부딪히면 가로 방향 속도의 부호만 뒤집힙니다. 들어간 각도 그대로 반대편으로 나갑니다. 즉 이 게임에는 성격이 다른 두 종류의 튕김이 섞여 있습니다. 벽은 거울이고, 패들은 조준대입니다.
왜 이렇게 만들었을까요. 거울 반사만 쓰면 플레이어가 공을 통제할 방법이 사라지기 때문입니다. 들어온 각도가 나가는 각도를 정해버리면 패들은 그저 공을 안 놓치는 장애물이 됩니다. 어디를 맞히든 결과가 같으니 실력이 개입할 여지가 없습니다.
맞은 위치로 각도를 정하면 이야기가 달라집니다. 플레이어는 패들을 조금씩 옮겨가며 공이 갈 곳을 고를 수 있습니다. 같은 상황에서도 잘하는 사람과 아닌 사람의 결과가 갈립니다. 초기 아케이드 게임들이 대부분 이 방식을 택한 이유가 여기 있습니다. 물리적으로 정확한 것보다 다룰 수 있는 것이 재미있기 때문입니다.

각도 범위는 좌우 63도까지입니다
각도가 무한정 커지지는 않습니다. 패들 끝을 맞혀도 수직에서 63도까지가 한계입니다. 이 한계가 없으면 끝을 맞힌 공이 거의 수평으로 날아가 좌우 벽만 오가다 영영 안 내려오게 됩니다.
| 맞은 지점 | 중앙에서 | 나가는 각도 |
|---|---|---|
| 정중앙 | 0픽셀 | 수직(0도) |
| 살짝 옆 | 10픽셀 | 약 12.6도 |
| 중간쯤 | 약 35.7픽셀 | 약 45도 |
| 양 끝 | 50픽셀 | 63도 |
패들 폭이 100픽셀이므로 계산이 단순해집니다. 중앙에서 1픽셀 벗어날 때마다 약 1.26도씩 꺾입니다. 손가락 한 칸 옮기는 정도가 10도 넘게 바꾼다는 뜻입니다. 공이 계속 수직으로만 오간다면 패들 한가운데로만 받고 있었던 것입니다.
벽돌은 가로로 10칸이고 폭이 44픽셀, 사이 간격이 4픽셀이라 전체가 476픽셀을 차지합니다. 캔버스 폭 480픽셀을 거의 다 덮습니다. 가장자리 한 칸을 노리려면 그만큼 크게 꺾어야 하고, 그건 패들 끝으로 받아야 나오는 각도입니다.

튕길 때마다 조금씩 빨라집니다
속도도 고정이 아닙니다. 패들에 맞으면 0.5%, 벽에 맞으면 0.3% 빨라집니다. 한 번으로는 느낄 수 없는 크기지만 쌓이면 다릅니다. 패들에만 100번 받아내도 약 1.65배가 됩니다.
그래서 판이 길어질수록 어려워지는 것이 설계된 결과입니다. 벽돌이 줄어 공이 오래 날아다닐수록 튕김 횟수가 늘고, 튕김이 늘수록 속도가 붙습니다. 마지막 한두 개가 유난히 안 잡히는 이유가 여기 있습니다. 남은 벽돌은 적은데 공은 가장 빠른 상태입니다.
다만 무한정 빨라지지는 않습니다. 속도는 14에서 멈춥니다. 이 상한이 없으면 어느 순간 공이 한 프레임에 벽돌을 통과해 버려 충돌 판정 자체가 어긋납니다. 게임이 끝까지 성립하게 만드는 안전장치입니다.
가속이 각도와 맞물리는 지점도 있습니다. 속도가 빨라지면 같은 시간에 더 멀리 가므로 한 번 꺾인 방향으로 훨씬 깊게 파고듭니다. 초반에 끝으로 받았을 때와 후반에 끝으로 받았을 때, 각도는 같아도 도달하는 지점이 달라집니다. 후반으로 갈수록 조준의 오차가 크게 벌어진다는 뜻입니다.
그래서 남은 벽돌이 적을 때는 크게 꺾기보다 조금씩 방향을 다듬는 편이 유리한 경우가 많습니다. 빠른 공을 크게 꺾으면 원하는 자리를 지나쳐 반대편 벽까지 가버립니다. 패들 중앙에서 조금만 벗어난 지점으로 받아 각도를 얕게 주는 쪽이 통제하기 쉽습니다.
같은 상황, 다른 두 가지 대처
구석에 벽돌 하나가 남았다고 해보겠습니다. 공은 지금 거의 수직으로 오르내리는 중입니다.
- 안 되는 방법 — 공이 떨어지는 자리로 패들을 급히 옮겨 받아냅니다. 공은 대개 패들 가운데쯤에 맞고, 다시 수직으로 올라갑니다. 같은 일이 반복되어 구석에는 영영 닿지 않습니다.
- 되는 방법 — 패들을 미리 옮겨두고 끝부분으로 받습니다. 중앙에서 50픽셀 지점이면 63도로 꺾여 나갑니다. 한 번에 구석까지 못 가더라도, 벽에 한 번 튕기면 반대쪽 끝에 닿습니다.
- 기억할 것 — 공이 빠를수록 받아내기는 어려워지지만 각도 규칙은 그대로입니다. 속도가 붙었다고 반사 방식이 달라지지는 않습니다.
정리하면 패들은 공을 받아내는 도구가 아니라 겨누는 도구입니다. 어디로 보낼지를 정하고 그 각도가 나오는 지점으로 패들을 가져다 대는 것, 그게 이 게임에서 실력이 갈리는 지점입니다. 공을 놓치지 않는 것만 신경 쓰면 판이 길어지고, 길어지면 속도가 붙어 결국 더 어려워집니다.
벽돌깨기에서 패들 어느 지점으로 받느냐에 따라 공이 어떻게 갈라지는지 직접 확인해 보세요. 방향키와 마우스, 터치로 모두 조작할 수 있습니다.
자주 묻는 질문
- 벽돌깨기에서 공은 들어온 각도대로 튕기나요?
- 패들에서는 아닙니다. 공이 패들 왼쪽 끝(0)부터 오른쪽 끝(1)까지 어느 지점에 맞았는지만 보고 나가는 각도를 정하며, 들어온 방향은 계산에 쓰이지 않습니다. 반면 좌우 벽에서는 가로 속도의 부호만 뒤집혀 거울처럼 반사됩니다. 벽은 거울이고 패들은 조준대입니다.
- 패들 어디를 맞히면 얼마나 꺾이나요?
- 패들 폭이 100픽셀이라 중앙에서 1픽셀 벗어날 때마다 약 1.26도씩 꺾입니다. 정중앙은 수직(0도), 10픽셀 옆은 약 12.6도, 약 35.7픽셀은 약 45도, 양 끝(50픽셀)은 상한인 63도입니다. 공이 수직으로만 오간다면 패들 한가운데로만 받고 있었던 것입니다.
- 공은 왜 점점 빨라지나요?
- 패들에 맞으면 0.5%, 벽에 맞으면 0.3%씩 빨라져 패들에만 100번 받아내면 약 1.65배가 됩니다. 속도는 14에서 멈추는데, 상한이 없으면 공이 한 프레임에 벽돌을 통과해 충돌 판정이 어긋나기 때문입니다.
- 구석에 남은 벽돌 하나는 어떻게 깨나요?
- 패들을 미리 옮겨두고 끝부분으로 받습니다. 중앙에서 50픽셀 지점이면 63도로 꺾여 나가고, 한 번에 구석까지 못 가더라도 벽에 한 번 튕기면 반대쪽 끝에 닿습니다. 공이 떨어지는 자리로 급히 옮겨 가운데로 받으면 다시 수직으로 올라가 같은 일이 반복됩니다.
패들 반사 공식과 각도 계수, 가속률, 속도 상한은 도구에 구현된 값을 그대로 정리한 것입니다. 본문의 각도는 그 공식으로 계산한 결과이며, 소수점은 반올림했습니다.