微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在pygame的左上角旋转某些东西

如何解决如何在pygame的左上角旋转某些东西

目前,我试图让我的枪旋转以看向我的鼠标 - 我正在工作。然而,旋转只是奇怪,并不能按照我想要的方式工作。我试图以 (0,0) 为中心旋转它,以便它围绕左上角旋转,但是它似乎不想将左上角夹在一个位置并围绕它旋转。

我有什么:

class Gun():
def __init__(self):
    self.original_image = p.transform.scale(p.image.load('D:\Projects\platformer\Assets\Gun.png'),(20,8))
def rotate(self,x,y):
    mx,my = p.mouse.get_pos()
    rel_x,rel_y = mx - x,my - y
    angle = (180/math.pi) * -math.atan2(rel_y,rel_x)
    self.image = p.transform.rotate(self.original_image,int(angle))
    self.rect = self.image.get_rect(center=(0,0))

    WIN.blit(self.image,(x,y))

这是正在发生的事情

但我希望枪的左上角只固定在一个位置。像这样:

有关如何执行此操作的任何建议,因为我知道 pygame 旋转很奇怪,目前我找不到任何可用的方法

解决方法

您需要将旋转图像的边界矩形的中心设置为原始图像的边界矩形的中心。使用旋转的矩形blit图像:

self.image = p.transform.rotate(self.original_image,int(angle))
self.rect = self.original_image.get_rect(topleft = (x,y))

rot_rect = self.image.get_rect(center = self.rect.center)
WIN.blit(self.image,rot_rect)

另见How do I rotate an image around its center using PyGame?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。