- 대부분의 2D 화면 / 비트 맵 좌표 시스템은 양의 Y 축이 아래쪽을 향하도록합니다 (왼쪽 위 모서리에 원점이 있음).
- 이것은 대부분의 사람들이 긍정적 인 Y가 가리키는 축과 기하학적으로 생각하는 방법을 카운터 까지 (중앙에 원점).
대부분의 게임은 서로 다른 2D 좌표계를 어떻게 관리합니까? 좌표에는 두 가지 주요 유형 (화면 대 데카르트)이 있지만 스프라이트 공간, 월드 공간,보기 공간, 화면 공간 등 여러 가지 좌표 공간이있을 수 있습니다.
배경:
원래 게임에서 월드 좌표를 2D 화면 좌표 규칙과 일치 시켰습니다. 이것은 그래픽 드로잉 루틴을 사용하는 것이 매우 자연 스럽지만 atan2 ()와 같은 삼각 함수를 사용할 때 미묘한 문제가 발생했습니다. atan2 ()가 양의 y 축을 가리킨다 고 가정하기 때문에 atan2 () 2D 화면 좌표를 공급 한 결과는 매우 혼란스러워합니다.
그래서 나는 세계 좌표를 고전적인 직교 좌표계 (화면의 왼쪽 아래에있는 원점)를 따르도록 변경했습니다. atan2 ()를 사용한 추론은 훨씬 간단하지만 이제는 다른 유형의 추론을하기가 더 어렵습니다.
- 여기 화면을 클릭하면 어떤 스프라이트가 있습니까?
- 그 스프라이트를 어디에서 클릭 했습니까?
- 스프라이트가 잘못된 위치에 그려지면 무엇이 잘못 계산 되었습니까? 화면 좌표 또는 세계 좌표?
화면에서 데카르트 좌표로의 변환에는 (x, y) 값의 선택적 변환으로 단순히 y 값을 -1로 스케일링하는 것이 포함됩니다. 게임 디자인 모범 사례에 더 관심이 있습니다.
- 대부분의 게임은 화면 좌표 규칙을 고수하고 atan2 ()와 같은 것들이 어떻게 작동해야하는지에 대한 생각을 바꾸나요?
- 좌표계 변환은 언제 / 어떻게 수행됩니까? (매트릭스, OOP 추상화 등 사용)
- 스프라이트 위치는 스프라이트의 중심 또는 모서리 중 하나로 저장됩니까? "잘못된"방향으로가는 스프라이트의 높이 / 너비는 내가 그릴 때 일반적인 문제인 것 같습니다.
내 질문은 주로 2D 게임에 관한 것이지만 OpenGL은 Y 축이 가리키는 좌표 시스템을 사용하는 것 같습니다. OpenGL은 결국 이러한 3D 좌표를 2D 화면 좌표 시스템에 투영해야합니다. 아마도 OpenGL의 방법에서 몇 가지 지침을 찾을 수 있습니다 ...