2012-08-06 4 views
3

iOS 및 Windows Phone에서 Android로 게임을 포팅합니다. 포트에 대해 내가 따르고있는 대부분의 코드는 Windows Phone 버전에서 나온 것으로, Java와 가장 비슷하기 때문입니다. 내 질문은 LibGDX의 OrthographicCamera 클래스와 관련이 있습니다.LibGDX의 텍스처 렌더링 순서

이 게임에서는 게임 개체를 구성 요소 컨테이너 방법으로 사용하고 있습니다. 이것에 관해서는 여기에서 읽을 수 있습니다 : http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ 그래서 당신은 내가 무슨 말을하고 있는지를 알고 있습니다. 따라서 게임의 모든 요소가 Component 구성 요소 클래스를 확장합니다. 각 게임 객체 즉, 공은 컴포넌트, 즉 Sprite, RigidBody (물리학을위한 것임), Transform2 (위치, 회전 등)를 규정하는 GameObject입니다. 여기에는 OrthographicCamera 멤버를 감싸는 Camera2 클래스가 포함됩니다.

두 가지 문제가 있으며, 끝까지 연구하지 않았습니다. 나는 겹겹이 만드는 방법을 알아낼 수 없다. 게임에는 서랍이있어 사용자가 아래로 스 와이프하여 드래그 할 수 있습니다. 이것은 게임의 다른 것 위에 있어야합니다. XNA 버전을 개발 한 사람이 여러 개의 SpriteBatches를 가져 와서 각 SpriteBatch를 레이어로 처리했습니다. 이것은 LibGDX에서 작동하지 않으며 여러 SpriteBatches를 사용하는 것은 나쁜 습관입니다. 문제는 게임 개체가 트리로 구성되어 있고 트리의 순회에 따라 렌더링되므로 개체가 트리에 삽입 된 시점을 기준으로 정렬됩니다. Z 순서를 사용할 수 있도록 DecalBatch를 조사했지만 게임이 거의 완료되면 리팩터링이 필요합니다. 내가 말했듯이 나는 여러 SpriteBatches를 사용하려했지만 어떤 이유에서든이 방법은 작동하지 않습니다.

이것은 이미 긴 게시물이므로 두 번째 문제는 별도 게시물로 요청할 것입니다.

+0

Stage를 사용 중입니까? 그런 다음 다른 스테이지를 만들거나 스테이지에 물건을 추가 할 수 있습니다. – Matsemann

+0

Scene2D에 관한 이야기 ​​(Stage가 구축 된)에 대해 실제로 Mario (Lead LibGDX 개발자)에게 연락을 드렸습니다. UI 물건이나 간단한 게임 이외에는 사용하지 말아야한다고했습니다. 그러나 이것은 아마도 아이디어 일 수 있습니다. 아마도 서랍의 무대를 사용하는 것일 수 있습니다. 나는 그것을 들여다 볼 것이다. – weaverx9x9

+0

이 시점에서 Stage를 추가하는 것은 지나치게 복잡 할 것이라고 생각합니다. 나는 그것이 효과가있을 것이라고 생각하지만 리팩토링이 필요하다. Google 코드에서 LibGDX에 대한 할 일 목록을 찾았으며 z- 순서를 스프라이트에 추가했습니다. 그것은 0.9 목록에 대한 뮤즈에있어. 아직 생각하지 마라. – weaverx9x9

답변

5

나는 이것을 알아 냈다. 나는 LibGDX에서 Mario에게 메시지를 보냈고 그는 렌더링하기 바로 전에 객체들을 정렬 할 것을 제안했다. 나는 이것을 어떻게해야하는지 잘 모르겠다. 나무에있는 것처럼, 나는 나무를 어떻게 분류해야하는지 알지 만, 그 순서는 거기에 없다. 레이어 필드를 추가하고 GameObject 클래스를 Comparable로 구현 한 다음 방문자 패턴 수락 메서드에서 모든 노드를 레이어별로 정렬합니다. 이제 완벽하게 작동합니다.

+1

작은 개체가 많은 경우 성능에 큰 영향을 미칠 수 있으므로주의하십시오. –