2012-04-29 3 views
0

현재 첫 번째 게임을 작성 중이며 Javascript + HTML5 Canvas에서 수행 중입니다. 이 게임은 WASD 동작을 가진 탑 다운 포인트 클릭 액션 슈터입니다. 어쨌든 어제 나는 비교를 최소화하기 위해 원과 쿼드 트리를 사용하여 충돌 감지를 구현했습니다. 나는 모든 총알, 선수, 적을 사거리에 던졌습니다. 이제는 모든 것이 잘 작동하고 있지만, 실제 레벨에서 충돌을 처리하는 다음 단계를 처리하는 방법에 대해서는 확신 할 수 없습니다. 글 머리 기호는 벽에 의해 차단되어야하고, 액터 (플레이어와 적)는 울타리와 벽 등으로 막아야합니다.자바 스크립트 게임 레벨 충돌

내 벽의 벽을 나타내는 모양을 정의하고이를 쿼드 트리 내의 개체 형태로 포함해야합니까? 그런 다음 SAT를 사용하여 각 요소가 충돌 할 수있는 요소와 비교하여 평가하거나 경로를 설명하는 숨겨진 이미지 레이어를 만든 다음 각 개체의 좌표를 테스트하여 검정색이 아닌지 확인합니다 픽셀 (움직이지 않는 지형과 충돌 함을 나타냄)?

감사합니다. 비슷한 질문에서

답변

0

:

나는 유령 운동과 충돌 감지가 PacMan에서 작동하는 방법에 대한이 우수한 기사를 읽는 것이 좋습니다.

그런 다음 논리적으로 Bomberman 레벨을 타일 컬렉션으로 모델링 해 보시기 바랍니다. 각 타일은 레벨의 불연속 위치를 나타내며 동시에 두 타일을 "타일 사이"또는 사이에 두는 것은 논리적으로 불가능합니다. 각 타일은 지형 기능이 현재 어떤 종류인지 추적 할 수 있으며 플레이어에 유효한 대상 타일인지 여부를 추적 할 수 있습니다. 그것은 일반적으로 플레이어에게 통행 불가).

그러면 세계의 모든 개체 에 대해 충돌 검색 알고리즘이 필요하지 않습니다. 적의 이동 시간이 올 때 또는 사용자가 캐릭터 이동을 시도 할 때 타일에 현재 타일에 인접한 타일이 모두 있는지 확인해야합니다 ( 대각선 허용) 이동), 각 타일이 올바른 방향으로 표시되는지 확인하고 방향이 올바르지 않으면 이동을 차단하십시오.

귀하의 질문에 대답하십시오. 모든 위치 업데이트에 대해 세계의 모든 객체를 반복하는 것은 매우 비효율적입니다.

+0

저는 배우가 총알과 각도로 360도 움직일 수 있기를 원하기 때문에 저에게는 효과가 없을 것이라고 생각합니다. 따라서 타일 사이에 있어야하기 때문에 필자는 어떤 종류의 타일 기반 시스템도 실제로 할 수 없었습니다. – Zerocaliber

+0

당신은 타일을 작게 만들고 싶을 것입니다. 대부분의 SNES 게임은 타일 기반이기 때문에 확실히 할 수 있습니다. http://www.youtube.com/watch?v=GcKJ6tYvvq0. 또한 세계가 타일 기반이라는 이유만으로 문자가 항상 하나의 타일에 정확하게 나타나야 함을 의미하지는 않습니다. – Bill

+0

기본적으로 타일은 플레이어의 위치를 ​​유지하는 수단으로 사용되며 플레이어가 새로운 타일로 이동하려고하면 해당 제목이 움직일 수있는 타일인지 확인합니다. 그렇지 않은 경우 플레이어가 타일의 가장자리까지 움직일 수 있도록 계산을 수행하지만 끝까지 진행하지는 않습니다. 타일을 다중 배열로 나타내지 만요? – Zerocaliber