2012-10-25 4 views
2

주위에 파이 게임 표면을 포장, 나는 배경이 모든 방향으로 주위에 "래핑"있도록 만들려고 노력하고 있어요 그것을 구형으로 둘러싼 2D 표면으로 생각하십시오. 어떤 방향으로 여행하든간에, 시작한 곳으로 돌아갈 것입니다.내가 뷰포트가 유한 한 게임 세계에서 플레이어의 배를 다음 게임을 코딩하고있어 뷰포트

나는 포장 배와 개체를 받고 아무 문제가 없지만, 뷰포트 자체가 게임 세계의 가장자리를 통과 할 때까지 배경이 표시되지 않습니다. 배경 화면을 "랩"할 수 있습니까? 나는 매우 명료되고 있지 않다 경우

는 미안 해요. 그것은 간단한 문제처럼 보이고 많은 게임이 그것을하지만, 나는 운을 찾지 못했습니다. 나는 배경을 바둑판 식으로 배열하는 방법에 대해 약간의 생각을 가지고 있지만, 단지 표면을 감싸라고 말할 수 있다면 좋을 것입니다.

+0

당신은 할 수 있지만, 어떤 유형의 스크롤이 필요한지 알아야합니다. paralaxx 스크롤을 의미합니까? http://www.youtube.com/watch?v=C2sgGQeZ_Yo 또는 RPG와 같은 2D지도 타일 세트 스크롤? – ninMonkey

+0

하나의 배경만을 사용하기 때문에 필자는 시차 스크롤을하지 않을 것입니다. 표면은 2000x2000이고 성능을 향상시키기 위해 500x500 픽셀로 나누기 위해 간단한 타일링 기능을 썼습니다. 버퍼를 사용하려고 생각했지만 전 방향 스크롤링이 얼마나 효과가 있을지 모르겠다. 나는 코너 케이스를 처리하기 위해 3 개의 분리 된 버퍼가 필요할 것이라고 생각한다. 나는 이것을 시도하고 내가 내 자신의 질문에 대답하는지 볼 것입니다. 내가 잘못 생각하면 더 좋은 방법을 알게되고 나는 당신의 제안을 듣고 싶어 할 것입니다. – fleegle2000

답변

0

모두에게 감사를 타일의 X 금액 블럭 전송 것 발전기를 시작합니다. 나는 대답과 조금 다른 것을했다. 본질적으로, 나는 메인 서페이스의 서브 표면을 만들어 버퍼로 사용하여 뷰포트에 포함 된 좌표가 월드 외부에있을 때마다 적절한 것으로 표시했습니다.스크롤링은 전 방향 적이기 때문에 각면과 네 모퉁이마다 8 개의 버퍼를 사용해야했습니다. 내 솔루션이 가장 우아하지 않을 수도 있지만 눈에 띄는 성능 저하없이 잘 작동하는 것 같습니다.

0

나는 그렇게 생각하지 않는다, 나는 생각을 가지고있다. 나는 배경이 수평 적으로 그리고 항상 오른쪽으로 줄 지어 추측하고 있습니다. 그러면 배경의 끝 부분에 처음 부분을 붙일 수 있습니다.

당신이 10,000px 배경을 가지고 뷰포트가 1000px 경우 예, 배경의 끝에 첫번째 1000px를 부착, 그래서 당신이 11,000px 배경을해야합니다. 그런 다음 vieport가 배경 끝까지 도달하면 0px 위치로 이동하고 계속 오른쪽으로 이동합니다.

+0

제안 해 주셔서 감사합니다. 나는 전 방향 스크롤을 사용하고 있기 때문에 작동하지 않을 것이라고 생각합니다. 나는 그것을 들여다 볼 것이다. – fleegle2000

0

나는 당신이 사용하는 것으로 묘사 된 것과 유사한 무엇인가를 원하고 있었다. 나는 모든 타일을 포함하고있는 단일 맵 클래스를 사용하기로 결정했고, 그 중 일부만을 메모리에로드하여 한 번에 섹터 (32x32 타일)로 나누기를 원했습니다. 나는 단지 3x3 섹터를 한 번에로드하는 것으로 제한했습니다. 내지도가 가장자리로 스크롤되면 다른 쪽의 섹터를 언로드하고 새로운 섹터에로드합니다.

내지도 클래스는로드 된 모든 분야의 사각형을 것, 내 카메라가 위치한 곳의 사각형 것이다. 각 틱에서 두 개의 Rect를 사용하여지도의 어느 부분을 블리트해야하는지, 그리고 새 섹터에로드해야하는지 확인합니다. 섹터가로드되면 변경해야합니다.

각 섹터의 속성은 다음과 같습니다. 1. 좌표는 (0, 0)이 세계에서 가장 가능한 섹터입니다. 2. Relative Sector Coordinate. (0, 0)은 가장 많이로드 된 섹터이고 (2,2) 3x3이로드 된 경우 가장 오른쪽 하단입니다. 섹터의 표시하는 부울 섹터 (4)의 영역을 개최 3. 사각형은 완전히

섹터가 완전히로드 된 경우 부울보고하면 각 게임 틱 확인할 것을로드하고, 그렇지 않은 경우, 전화를했다 다음으로 맵 표면에 X 타일을 blit하는 제네레이터에서. 기존의 섹터가 업데이트되었을 때 나는

  1. 각 업데이트, 부하, 또는 업데이트 및 기존 부문을 언로드 할
  2. 전체 표면
  3. , 그것은

그것은 갱신에 분야를 언로드 할 이동 것 그런 다음 필요한 새 항목을 만드십시오. 만든 후, 각 섹터는 갱신 당 제안