버그 해결을 위한 모든 질문을 던져
0 votes
277 views

다음과 같은 통맵이 있다고 가정했을 때

API에서 이를 충돌 판정 하는 방법은 일일이 맵에 픽셀 계산해서 RECT를 이용하는 방법 밖에 없나요?

이걸 잘라서 타일맵을 사용할려고도 생각중입니다만.. 원본이 약 4000 x 3000가량인데 너무 많이 잘라서

오히려 통맵보다 과부하가 걸릴 것 같아서요...

 

asked (8 point) , 277 views

3 answers

0 votes
옥트리나 쿼드트리 같은 형태 쓰시면 될 것 같네요. 검색 ㄱㄱ
answered (101 point)
대충 쿼드트리가 어떠한 내용인지는 알겠는데...

충돌감지할 때에 비용을 줄여주는 알고리즘 같네요..

그럼 저 벽들이나 사물과 충돌 하기위해서는 타일맵처럼 충돌 정보를 넣어주거나

픽셀 충돌처럼 RGB 값을 산출해야하나요? API라서 진짜 뭣같네요 T^T
+2 votes
일단 가장 단순하게 많이 쓰였던 방법은 말씀하신것처럼 충돌 박스를 미리 맵 위치별로 놓고 체크하는거죠
다만 이 방법을 어떻게 할수있냐 문제인데
1. 하드코딩으로 일일이 좌표값 수정하면서 하는 방법
2. 파일로 좌표값을 불려와서 하는 방법
3. 툴을 사용해서 하는 방법

1~2번은 결국 형태는 같은데 1번은 매번 컴파일 해야한다는거 생각하면 2번 방법이 낫죠
그리고 이동해서 박스별로 일일이 체크하시지 말고 일단 박스가 가시적으로 화면에 나오게 해서 배치 하시고 그뒤에 체크 한번에 하시는 방법도 괜찮고요
3번은 누가 만들어 놓으신걸 찾아 쓰시거나 직접 만드시는 방법이 있을 듯하네요
좌표 4개 찍으면 가시적으로 상자가 나오고(드래그를 해서 정확하게 조절할 수 있는 기능 넣어도 되고 안 넣어도 되고요)
그런 식으로 박스 여러개 맵에 다 배치하고 저장하면 그 박스들 좌표가 순차적으로 파일로 뽑히게 해서
그 좌표를 이용해서 하는 방법도 있겠네요
(쓰다가 생각 든게 구지 툴로 따로 안 만들고 만드시는 게임에 마우스 클릭해서 박스 생성 되고 저장하면 좌표 뽑히는 형태로 기능 추가하셔서 하셔도 되듯 하네요)

그리고 위에 말씀하신 성능 부분은 작은 박스로 공간 다 채우려고 하면 성능 저하 상대적으로 있을테니 큰 박스로 할수있는 곳은 큰 박스 하나로 채우고 꼭 섬세하게 필요한 부분만 작은 박스로로 커버 치는거 추천드리고
(이건 직접 타겟으로 하는 기기에 맞쳐서 테스트 해보셔야 할 부분이고요....원래 옛로부터 성능 보면서 박스양 줄이는건 흔한 일이였죠)
 

 

또 다른 방법으로는 포토샵으로 알파채널 작업 하듯이 마법사 툴을 잘 이용해서 이동 가능한 길은 흰색 아닌 곳은 검정색으로 색칠해서 이미지 뽑으신 뒤에 인 게임에서 그 이미지를 사용해서 이동하려는 방향의 위치의 픽셀 색상 값이 흰색이면 이동 아니면 이동 못하게 하는 방법도 있고요
(이 방법 같은 경우는 체크 하는 위치와 캐릭터 한번에 이동량과 캐릭터 중점과 스프라이트 크기 등 고려해서 처리하는 부분이 작업에 중점을 둬야하는 부분이죠)
 

윗 분이 말씀하신 옥트리나 쿼드트리 등 좀더 기술적인 방법으로 처리하는 방법들도 있고요
 

일단 당장 생각 나는건 이 두 개인데 옛날에 한참 떄는 여러 방법을 있었던걸로 기억하는데....
answered (83 point)
수정됨
0 votes
타일맵을 쓰지 않더라도

타일 맵 처럼 사용하셔야 합니다

타일 사이즈 만큼 배열 만들어서 속성값 입력 하는 툴을 만드시면 됩니다
answered (4 point)
하면 더 나을 수는 있어도 꼭 어떻게 해야한다는건 없죠
하드웨어 스펙 후지던 90년대 2d 게임들 중에서도 그냥 통자맵으로 구현한 경우들도 있으니까요
시간과 필요한 상황과 성능 고려해서 적절한 방법 찾아서 하면 되는거죠

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

339 질문
461 answers
471 댓글
1,114 users