Python 如何旋转一组pygame对象(矩形或图像)
一幅画抵得上千言万语,所以最终,我的问题是“我如何才能做到这一点?” 直觉上,我认为这可以通过在由Python 如何旋转一组pygame对象(矩形或图像),python,pygame,Python,Pygame,一幅画抵得上千言万语,所以最终,我的问题是“我如何才能做到这一点?” 直觉上,我认为这可以通过在由pygame.display.set_mode定义的主显示对象中定义一个曲面来实现,在该曲面上绘制(或闪烁)所需的任何内容,然后使用pygame.transform.rotate旋转它。我假设静态点可以直接绘制到下面代码中的屏幕对象,这是pygame.display.set_mode函数返回的对象 因此,我起草了以下测试代码,但我没有看到任何旋转。我做错了什么 #!/usr/bin/env pyt
pygame.display.set_mode
定义的主显示对象中定义一个曲面来实现,在该曲面上绘制(或闪烁)所需的任何内容,然后使用pygame.transform.rotate
旋转它。我假设静态点可以直接绘制到下面代码中的屏幕
对象,这是pygame.display.set_mode
函数返回的对象
因此,我起草了以下测试代码,但我没有看到任何旋转。我做错了什么
#!/usr/bin/env python
import pygame as pg
from pygame.locals import *
SIZE = (800, 600)
BGCOL = (128, 128, 128)
STIMCOL = (80, 255, 80)
screen = pg.display.set_mode((SIZE), HWSURFACE | DOUBLEBUF)
screen.fill(BGCOL)
surf = pg.Surface((200, 200), flags=HWSURFACE)
surf.fill(BGCOL)
pg.draw.rect(surf, STIMCOL, (10, 20, 40, 50))
pg.draw.rect(surf, STIMCOL, (60, 70, 80, 90))
screen.blit(surf, (100, 100))
pg.display.flip()
running = True
while running:
pg.transform.rotate(surf, -1)
pg.display.flip()
当然,如果有更好的办法,我洗耳恭听。也许精灵团体是一个好办法?(虽然我以前从未使用过…=/)
谢谢 代码中有一些错误: pygame.transform.rotate(曲面,角度)返回一个旋转的曲面 而且你不是在while循环中对曲面进行闪电扫描。因此,您的代码应该如下所示:
import pygame as pg
from pygame.locals import *
SIZE = (800, 600)
BGCOL = (128, 128, 128)
STIMCOL = (80, 255, 80)
screen = pg.display.set_mode((SIZE), HWSURFACE | DOUBLEBUF)
screen.fill(BGCOL)
surf = pg.Surface((200, 200), flags=HWSURFACE)
surf.fill(BGCOL)
pg.draw.rect(surf, STIMCOL, (10, 20, 40, 50))
pg.draw.rect(surf, STIMCOL, (60, 70, 80, 90))
screen.blit(surf, (100, 100))
pg.display.flip()
running = True
while running:
surf = pg.transform.rotate(surf, -1) # updating rotation on the surface
screen.blit(surf, (100, 100)) #bliting the resulting image every frame
pg.display.flip()
编辑:在查看pygame文档中的注释后,当旋转90度以外的任何角度时,图像的大小调整都存在许多问题。您应该跟踪旋转,并从零开始将图像旋转一个越来越大的角度。这是朝着正确方向迈出的一步,但我运行了代码,矩形从屏幕上滚下,再也没有返回=(正如我在编辑中所说,如果旋转角度不是90度,则生成的曲面会变大。您可以在“旋转”的注释中找到解决此问题的代码