玩家在 pygame 中指向鼠标时出现故障

问题描述

我正在尝试制作一个指向鼠标的精灵,但是当我运行游戏时,玩家疯狂旋转,出现故障,然后出现 pygame.error: Out of memory。为什么会出现错误?我四处搜索,但得到相同的结果。

我的播放器类和事件循环:

class Player(pygame.sprite.Sprite):
    def __init__(self,window,x,y,image="player.png",size=(100,100)):
        pygame.sprite.Sprite.__init__(self)

        self.screen = window
        self.x = x
        self.y = y
        self.pos = (self.x,self.y)
        self.image = pygame.image.load(image)
        self.image = pygame.transform.scale(self.image,size)
        self.rect = self.image.get_rect()
        self.rect.center = (self.x,self.y)

    def update(self):
        self.rect.center = (self.x,self.y)
        self.screen.blit(self.image,self.rect)

    def point_to_mouse(self):
        mouse_x,mouse_y = pygame.mouse.get_pos()
        x,y = mouse_x - self.x,mouse_y - self.y
        angle = (180 / math.pi) * -math.atan2(y,x)
        self.image = pygame.transform.rotate(self.image,int(angle))
        self.rect = self.image.get_rect(center=(self.x,self.y))

    def movement_checks(self,speed):
        key = pygame.key.get_pressed()

        if key[K_a]:
            self.x -= speed
        if key[K_s]:
            self.y += speed
        if key[K_d]:
            self.x += speed
        if key[K_w]:
            self.y -= speed


player = Player(screen,400,500,size=(400,230))

running = True
clock = pygame.time.Clock()

while running:
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

    screen.fill(THECOLORS["white"])

    player.update()
    player.movement_checks(11)
    player.point_to_mouse()

    pygame.display.update()
    clock.tick(40)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)