2011-03-03 4 views
0

본질적으로 2 차원 플래너 인 Farseer 물리 엔진을 사용하는 XNA에서 게임을 개발 중입니다. 물리 엔진에 대한 원하는 단위 대 스프라이트를 그리는 방법을 해결하는 데 문제가 있습니다.2D 게임 액터 좌표 대 스크린 좌표 좌표

예를 들어 저는 사람을위한 스프라이트가 있습니다. 물리학 모양은 단순히 0.8 x 1.8 (미터)이며 위치는 미터입니다. 중력 및 실제 스케일링을 매우 간단하게 만듭니다. (나는 왼쪽 하단에서도 원점을 좋아하지만 upsidedown을 생각할 수있다.)

그러나 2d에서 렌더링하는 표준 방법은 원점을 기준으로 1 : 1 픽셀 비율로 작동하는 SpriteBatch.Draw입니다. 왼쪽 위.

이 조정 방법은 무엇입니까? 처음에는 수작업으로 방금 사각형의 크기/크기를 수동으로 조정하고 SpriteBatch의 소스/대상 매개 변수를 사용했지만 속도가 느리고 속도가 느린 것처럼 보였습니다. 이상적으로는 투영 행렬을 설정 한 다음 물리 객체의 정보를 사용하여 모든 것을 그립니다. 아아, 그것이 걸리는 모든 사각형은 정수가 아니기 때문에 유동적이지 않으므로 잘 동작하지 않습니다 ...

다른 프로젝트 (OpenGL)에서는보기 매트릭스를 적절한 크기로 설정하고 렌더링했습니다 그 (것)들에 짜임새를 가진 쿼드. XNA에서 어떻게 접근해야합니까? 아니면 XNA를 사용하는 사람들이 가지고있는 비밀 방법이 있습니까?

답변

0

이, 당신이 찾고있는 것은 "카메라 가상화는"생각)를 (0.5, 0.5)로 변환하고, 그것을 그릴 때 적절한 위치로 스케일/변환합니다.

이것은 1 : 1 드로우/피직스 오브젝트 비율을 제공하여 모든 것을 쉽게 만듭니다. 다른 해결책으로 스프라이트 크기에 문제가 생길지 모르겠지만 스프린트 크기에주의를 기울여 회피하고 생각하면 지불해야 할 작은 가격입니다.

누군가가 더 나은 해결책을 찾지 못하면 답으로 표시하겠습니다.

0

는 난 그냥 (-0.5, -0.5에서 질감 쿼드를 만들기 위해 일련의 정점을 만들어 결국 여기 좋은 자습서>http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/

+0

나는 카메라를 분류 했으므로 문제는 없다. 결국 뷰 매트릭스에 불과하다. 그러나 [0.8, 1.8] 크기로 플레이어를 [0.2, 4.1] 위치에 그려서 화면에 올려 놓으려는 경우 SpriteBatch에서 매트릭스 변환을 수행하지 않아도됩니다. – XwipeoutX