2014-12-29 3 views
0

이것은 내 게임에 픽셀 화 된 이미지를 그리는 방법에 대한 간단한 예 :Kivy로 픽셀 화 된 게임을 만드는 가장 효율적인 방법은 무엇입니까?

SCALE = 6 

class MyApp(App): 
    def build(self): 
     parent = Widget() 

     texture = self.load_some_texture() 
     texture.min_filter = 'nearest' 
     texture.mag_filter = 'nearest' 

     with self.canvas: 
      PushMatrix() 
      Scale(SCALE) 
      self.pixelart = Rectangle(texture=texture, pos=(0, 0), size=(64, 64)) 
      PopMatrix() 

     return parent 

이가 Kivy의 픽셀 화 된 게임을 만들 수있는 가장 좋은 가장 효율적인 방법이 있나요? 그렇지 않다면 무엇입니까?

답변

1
with self.canvas: 
    Scale(6) 
    self.pixelart = Rectangle(texture=texture, pos=(0, 0), size=(64, 64)) 

난 당신이 위젯 시스템을 조금 싸우고 있다고 생각 - 대신이 일을 스케일을 떠나지 않을 이유 위젯 POS/크기로 직사각형 POS/크기를 설정 (그리고 그렇게 구속력을 변경 될 때 위젯 pos/size를 따르는), 그리고 위젯의 pos와 size를 설정하여 모든 것을 즉시 변경합니다. 이렇게하면 모든 것이 추적되므로 예상대로 위젯이 작동합니다. 또는 버튼을 정상적으로 작동하는 위젯으로 만들려면 픽셀 그림을 다른 위젯에 넣을 수 있습니다.이 위젯에는 일반적인 비헤이비어가 없습니다.

스케일을 재설정하려면 (다른 매트릭스 명령어) PushMatrixPopMatrix 캔버스 지침 사이에 눈금 변경을 적용 할 수 있습니다.

+0

저는 Buttonart 내부에 pixelart를 그리지 않았지만,'MyApp' 내부에는 픽셀 아트를 그리지 않았습니다. 이것이 불분명하면 죄송합니다. 나는 나의 질문을 업데이트하고'Push'와'PopMatrix'를 사용했다. 감사! 내 질문에 다시 시도해볼 수 있겠습니까? – Joschua

+0

앱에 캔버스가 없으므로 코드가 작동하지 않습니다. 일반적으로 픽셀 사이의 보간없이 이미지를로드하려면 적절한 텍스처에 대해 이러한 속성을 설정해야합니다. 자동으로 서브 클래스를 만드는 것이 편리 할 수 ​​있습니다. – inclement

관련 문제