1. 플레이어가 폭탄 놓으면 빠져나갈때까지 충돌 판정 안나게 하기
  2. 그리고 몬스터들은 플레이어가 폭탄 놓자마자 못 지나가게 하기


구현은 어렵지 않았지만 버그가 너무 많이터져버렸다. 아무래도 픽셀단위 이동이기 때문에
폭탄을 놓다가 중간에 몬스터가 겹쳐버리면 무시하고 지나가버리거나 폭탄과 겹쳐진 상태에서 멈춰져버린다.
간혹가다 몬스터가 이상한 방향으로 틀어서 벽을 뚫고가거나 멈춰버리는 등 총체적 난국이었다.

일단 가장 처음 해결 방법이 떠오른건 우선 플레이어가 폭탄을 놓기전에 해당 타일과 겹치는 몬스터가 있는지 없는지 판별해서 놓기였다. 하지만 아무래도 실시간 게임이다보니 버그가 100%정확하게 막아지진 않았다 간혹가다 겹쳐진 몬스터가 나오는 등 버그가 여전했다.
어차피 몬스터랑 마주치면 죽게할꺼라 포기하고 이정도로 냅둘까 생각도 했지만, 찝찝한건 질색이고 하나의 버그가 다른 버그를 만들어낼 것 같아 해결 해보기로 했다.

1차적으로 위에 처럼 방어선을 쳐두고 2차적으로 몬스터와 폭탄이 겹치는 상황이 발생하면 적당한 위치로 보정해서 밀어버리는 방식을 구현하기로 했다
이건 또 다른 어려움이었다.. 움직이는 오브젝트에 대한 클래스를 전부 손봐야하기 때문이었다. 거의 플레이어 클래스랑 다이나믹 클래스를 전부 다 손보느라 시간이 좀 걸렸다.

 
 

실제 맵은 픽셀단위지만 속도를 세밀하게 다루기 위해서 내부 단위를 각자 1000을 곱해서 이동량을 1프레임당 1/1000 까지 다룰 수 있게했다.
그리고 판정에대한 기준점은 16x16의 중앙 지점인데 이걸 타일 단위로 변환해서 이동 방향의 반대방향으로 이동 시킨 다음 판정 박스를 이동시켰다. 그리고 해당 지점에 폭탄이 있는지 확인하고 없으면 계속 이동하고 있다면 반대방향으로 밀리는 방식이다.

그리고 플레이어가 폭탄의 판정 박스를 벗어날 때 까지 플래그를 세우기 위해 폭탄의 소유주를 포인터로 넘겨서 관리하게 했다. 폭탄이 바닥에 놓여지고 폭탄 판정 박스를 벗어나면 소유주의 포인터를 nullptr로 바꿔버리는 식으로 했다.

폭탄의 충돌 구현 전
 

폭탄 충돌 구현 후


몬스터 수십마리를 놓고 폭탄 놓는 키 연타하면서 버그 찾는중인데 아직까지 심한 버그는 발견 못했다.
얼추 해결한 것 같다