Python 旋转点后,Pygame线消失

Python 旋转点后,Pygame线消失,python,rotation,pygame,Python,Rotation,Pygame,我是python新手,尝试用旋转的船做游戏。然而,在旋转之后,船消失了。我打印了三个点的坐标,屏幕上应该会显示。有人知道我的代码出了什么问题吗 这是旋转船舶的代码: radius = self.width / 2 self.angle += da center = [self.pos[0] + radius, self.pos[1] + radius] for point in self.points: dx = int(math.cos(self.angle) * radius)

我是python新手,尝试用旋转的船做游戏。然而,在旋转之后,船消失了。我打印了三个点的坐标,屏幕上应该会显示。有人知道我的代码出了什么问题吗

这是旋转船舶的代码:

radius = self.width / 2
self.angle += da
center = [self.pos[0] + radius, self.pos[1] + radius]

for point in self.points:
    dx = int(math.cos(self.angle) * radius)
    dy = int(math.sin(self.angle) * radius)
    point[0] = center[0] + dx
    point[1] = center[1] + dy
这是绘制屏幕的代码:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        self.ship.move(self)
    if keys[pygame.K_RIGHT]:
        self.ship.rotate(0.08)
    if keys[pygame.K_LEFT]:
        self.ship.rotate(-0.08)

    self.display.fill(self.bgcolor)
    self.ship.draw(self.display)

    pygame.display.update()
    self.fpsclock.tick(self.fps)
请看以下代码:

for point in self.points:
    dx = int(math.cos(self.angle) * radius)
    dy = int(math.sin(self.angle) * radius)
    point[0] = center[0] + dx
    point[1] = center[1] + dy

请注意,您并没有对任何内容使用point,只是设置了它。假设self.points是一个组成飞船的点列表,我认为你的飞船在遇到此代码时会塌陷为一个点。

相关说明:不要使用旋转版本修改原始坐标。由于数字错误,您的坐标将漂移&最终变得不可用。相反,在原始数据的副本上累积旋转角度和位置,并在渲染之前平移/旋转。