문제

대학 용어 프로젝트의 경우, 아이소 메트릭 디스플레이를 사용하는 그래픽 로관 (P)을 사용하고 있습니다 (P). 내가 알아 내려고하는 것은 모든 타일을 그리는 것이 어리 석고 비싸고 불필요하기 때문에, 타일이라는 점을 감안할 때 NXMPX 창 내에 어떤 타일을 그려야하는지 결정하기 위해 비교적 빠른 알고리즘을 알아 내고 싶습니다. 그래픽은 xxypx입니다.

나는 이것을 위해 부드러운 스크롤을하고 있지 않으므로 문제가되지 않습니다. 나는 또한 완벽하다는 것에 대해 걱정하지 않습니다. 약간 불필요한 추첨은 괜찮습니다. 게임 내에서 나타나지 않는 엄청난 양의 불필요한 타일을 그리고 싶지 않습니다.

도움이 되었습니까?

해결책

스크린 공간과 세계 공간의 두 가지 개념에 대해 생각해야합니다. 이것들은 3D 엔진에서 매우 중요하지만 가장 단순한 게임을 제외한 모든 게임에 적용됩니다. 아이소 메트릭 엔진에서 세계 공간은 2D 타일 배열입니다.

그래서 당신은 먼저이 두 개의 조정 공간을 은밀하게 볼 수있는 방법을 찾고 있습니다. 이 작업을 마치면 화면 공간이 45 도로 돌리는 직장으로서 세계에 맵핑된다는 것이 분명합니다. 이를위한 공식을 결정할 수는 있지만 세계 공간의 어느 부분이 보이는지 결정하려고하는 경우에만 중요합니다. 따라서 해당 영역의 몬스터를 시뮬레이션합니다 (아마도 최신 PC에서는 8 비트 콘솔에 필요한 효율성입니다! ). 실제 렌더링에 관해서는 타일을 화면에 렌더링하는 방식에 암시되기 때문에 세계 의이 눈에 보이는 영역을 결정할 필요가 없습니다.

  1. 화면의 왼쪽 상단에있는 타일 위치를 알아 내고 O (Origin)를 호출하십시오. 이는 귀하의 관심 지점, 일반적으로 플레이어에서 고정 된 오프셋이 될 것입니다. 화면.
  2. 일단 화면의 상단 행에 타일을 페인트하면 각 타일에 대해 세계 공간에서 +1x 및 -1y를 밟습니다 (북동쪽을보고있는 경우).
  3. 그런 다음 아래 행을 페인트합니다. 화면 공간에서 오프셋 마이너스 마이너스 화면 공간에서 타일 너비의 반쪽이 1/1을 뺀 다음 세계 공간에서 O -1X에서 시작합니다.
  4. 2 단계와 3 단계를 반복하여 화면 상단에 도달 할 때까지 이전 단계 2에서 사용한 것에서 World Space의 시작 위치를 x 및 y에서 -1로 수정합니다.

기타 팁 :-

  • 분명히 당신은지도 외부에있는 타일을 그리지 않습니다. 또한 게임 디자인에 따라 플레이어가있는 특정 방 외부의 타일을 그리지 않을 수도 있습니다.
  • 플로어 타일도 그리는 바닥 타일도없고, 플레이어, 몬스터, 장면 등도 있습니다. 규칙은 같은 패스의 부수적 인 세계 위치에 모든 것을 그릴 것입니다. 그런 식으로 '카메라'에 가장 가까운 물체는 그 뒤에 물건을 가릴 수 있습니다 (따라서 화면 상단에서 그리기 시작하는 이유).
  • 또한 대부분의 ISO 엔진에는 바닥 타일이 없으며 가구와 벽 세그먼트도 있습니다. 지도의 영역을 특정 방에 속하는 것으로 지정할 수 있습니다. 그 방에 초점이있을 때 (플레이어가 예를 들어 플레이어가 있기 때문에) 카메라에 가장 가까운 방의 벽 세그먼트를 그릴 수 없습니다. .

어쨌든, 그것에 도달하기에 충분합니다. 도움이되고 프로젝트가 잘되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top