我正在创建一个游戏,我需要旋转船,我如何才能从中心而不是左上角旋转船?我使用的是Python2.7和PyGame1.9。
这是我已经旋转图像的代码。

shipImg = pygame.transform.rotate(shipImg,-90)

但是,这会从拐角处旋转图像。

最佳答案

旋转精灵,然后将新矩形的中心设置为旧矩形的中心。这样,新的一个有相同的中心,当你做了,使它看起来像是围绕中心旋转。
下面是pygame wiki中的一个示例函数:

def rot_center(image, rect, angle):
    """rotate an image while keeping its center"""
    rot_image = pygame.transform.rotate(image, angle)
    rot_rect = rot_image.get_rect(center=rect.center)
    return rot_image,rot_rect

下面是您在示例中使用它的方法:
# Draw ship image centered around 100, 100
oldRect = shipImg.get_rect(center=(100,100))
screen.blit(shipImg, oldRect)

# Now  rotate the ship and draw it with the new rect,
# which will keep it centered around 100,100
shipImg, newRect = rot_center(shipImg,oldRect,-90)
screen.blit(shipImg, newRect)

10-06 11:59