저는 Bomberman (제 첫 번째 게임)과 같은 Java에서 2D 타일 기반 게임을 프로그래밍하고 있습니다.배열을 사용하여 2D 타일 기반 게임에서 그래픽 및 논리 위치를 조정하는 방법은 무엇입니까?
2 차원 배열을 사용하여 벽, 걷기 공간 등을 추적하는지도를 나타냅니다. 이제는 플레이어가 방향키에 따라 스프라이트를 부드럽게 움직일 수있게 만들었지 만 배경 /지도, 무작위로 걷고 화면에서 빠져 나올 수 있음).
배열에서 플레이어의 위치를 추적하고 싶을 때 문제가 발생합니다. 논리적으로 문자는 항상 하나의 타일에만 속하지만 그래픽으로는 두 개의 타일 사이에있을 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까?
는 I 이미 시도 :
currentTileArrayX = X/tileWidth 단계;
currentTileArrayY = y/tileHeight;
여기서 x와 y는 스프라이트의 왼쪽 위 좌표입니다. 하지만 플레이어의 스프라이트가 타일과 크기가 다르기 때문에 모든 것이 매우 버그가 있습니다.
이전 문제를 해결할 수있는 또 다른 옵션이 있습니다. 플레이어가 방향키를 누를 때 캐릭터를 애니메이션처럼 다음 타일로 이동하십시오. 이것은 플레이어가 두 개의 타일의 중간에 멈추게하지는 않을 것입니다 ... 그러나 그가 다른 주요 언론과 함께 중단한다면 어떨까요? 애니메이션 실행 중에 어떻게 사용자의 동작을 멈출 수 있습니까? 나는 이것이 가장 쉬운 해결책이라고 생각하지만 그것을 구현하는 방법을 모른다.
이미 다른 질문에서 해결책을 찾으려고했지만 운이 없었습니다. 네가 나를 도울 수 있기를 바랍니다.
고마워요.
Nupul 솔루션 번호 1을 사용하여 코드를 변경했습니다. 덕분에 많은 버그가 해결되었으므로 지금은 거의 작동한다고 말할 수 있습니다. 하지만 아직 한 가지 문제가 있습니다. http://imageshack.us/f/687/bomberbug.png/ 이미지에서 올바르게 설명했으면합니다. – Rama
이미지에서 currentPosition은 여전히 빨간색 타일입니다. 빨간 타일의 오른쪽이 자유 롭기 때문에 나는 오른쪽으로 걸을 수 있지만 그래픽으로는 안됩니다. – Rama
@ 라마 : 당신이 무슨 뜻인지 확실하지 않습니다 ... 오른쪽으로 걸어 갈 수 있다면, "왜 안 되겠습니까?" 둘째로 "그래픽으로"당신은 데이터 구조적으로 당신이 허용되어서는 안된다. 내부 모델은보기를 정확하게 표현해야합니다. 내가 모델에서 바로 갈 수 없다면,보기가 v.v.v.v 소수점 지향적이어서 말하면서 볼 수 있도록해서는 안된다. 내가 제대로 이해하지 못한다면 좀 더 문제를 명확하게 설명해 주시겠습니까? – PhD