2014-10-14 8 views
1

저는 파이 게임으로 작업하고 있습니다. 2D 스크롤링 게임을 만들고 싶습니다. 내 큰지도를 만들기 위해 필요한 모든 직사각형을 프로그래밍하지 않아도됩니다. png 파일 (지도가 될 것입니다)을 사용할 수 있습니까? 스프라이트가 이미지의 어떤 부분과도 직각 인 것처럼 상호 작용할 수 있습니까? 또는 이미지를 가져 와서 rect로 변환 할 수 있습니까? 미리 감사드립니다.파이 게임에서 대화식지도로 PNG 파일 사용

답변

0

"상호 작용"은 주로 충돌 감지 (즉, 캐릭터가 이동할 수있는 위치와 이동할 수없는 곳을 제어)를 말합니다. 이는 많은 리소스를 사용할 수있는 매우 광범위한 주제입니다.

pygame.mask 모듈 (docs here)을 살펴보십시오. 당신이 묘사하고있는 것을하기 위해서, 당신은 당신의 레벨을 겹쳐서 분리 된 마스크 이미지를 만들 수 있습니다. 통과 할 수없는 영역을위한 하나의 색과 할 수있는 영역을위한 또 다른 색. 그런 다음 pygame.mask.from_threshold()은 자동으로 Mask 개체를 만들 수 있습니다.이 개체를 사용하여 스프라이트와 레벨 간의 충돌을 감지 할 수 있습니다.

Mario level example

가 충돌 마스크는 다음과 같습니다 :

Mario level mask example

주 박스가 고려되지 않습니다

아주 간단한 예를 들어

이 마리오 수준을 고려 레벨의 일부 임에도 불구하고 마스크에 이 방법은 레벨의 완전히 정적 인 조각에만 유용합니다. 박스는 아마 충돌을 감지하기 위해 자신의 rect/mask가있는 스프라이트 일 것입니다. 이 경우 파이프는 단단한 객체 일뿐입니다.

복잡한 마스크가있는 전체 레벨에 대해 하나의 큰 이미지는 성능 문제를 일으킬 수 있습니다. 제 경험으로 보면 큰 이미지를 스크롤하는 것은 파이 게임이 잘하는 것이 아닙니다.

tl; dr - 성능은 다소 좋아질 수 있지만 성능에 좋지는 않습니다.