Текстуры пимунка
Я пишу небольшую демонстрацию, используя pymunk и pygame, где я хочу применить "текстуры" к фигурам в пространстве pymunk. У меня есть класс под названием PhysicsSprite, который берет изображение и формирует его в правильную форму и пытается нарисовать его в правильном месте. К сожалению, смещение по y не работает, и когда я пытаюсь изменить его, вращение портится.
Это мой класс физики спрайт
class BaseSprite():
def __init__(self, img, size = None):
self.imgFile = img
self.img = image.load(img)
self.size = size
#if size:
# self.img = transform.smoothscale(self.img, self.size)
class PhysicsSprite(BaseSprite):
def __init__(self, img, body, size = None):
BaseSprite.__init__(self, img, size)
self.body = body
for shape in self.body.shapes:
vertices = shape.get_vertices()
maxX = 0
for vert in vertices:
vert += self.body.position
vert[0] = 500 - vert[0]
if vert[0] > maxX: maxX = vert[0]
self.surf = Surface([500, 500], SRCALPHA)
polygon(self.surf, [255, 255, 255], vertices)
self.surf.blit(self.img, self.body.position - [maxX, 0], None, BLEND_RGB_MULT)
self.img = self.surf
def calculateOffset(self, img):
size = img.get_size()
return [size[0] / 2, size[1] / 2]
def getImage(self):
angle = degrees(self.body.angle) + 180
img = transform.rotate(self.img, angle)
offset = self.calculateOffset(img)
position = self.body.position
position = flipY(self.body.position, 500)
position = [position[0] - offset[0], position[1] - offset[1]]
return img, position
def flipY(pos, size):
return [pos[0], -pos[1] + size]
В каждом игровом цикле вызывается функция getImage, чтобы получить новое повернутое изображение и его положение, которое будет скрыто. Это то, что на самом деле происходит