我尝试使用以下代码在pygame中使一个白色矩形像时钟的指针一样旋转,
import random, pygame, math, sys
from pygame.locals import *
Blue = (0,0,255)
Black = (0, 0, 0)
Green = (0,255,0)
White = (255,255,255)
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Sailing!')
FPS = 30
fpsClock = pygame.time.Clock()
Sail = pygame.Surface([100,10])
Sail.set_colorkey (Black)
Sail.fill(White)
degrees = 0
hyp = 100
x = 200
y = 150
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
adj = 10 * math.cos(degrees)
opp = 10 * math.sin(degrees)
dx = adj + 200
dy = opp + 150
rotatedSail = pygame.transform.rotate(Sail, degrees)
Sail_rect = Sail.get_rect(topleft = (dx, dy))
DISPLAYSURF.fill(Blue)
DISPLAYSURF.blit(rotatedSail, Sail_rect)
pygame.display.flip()
fpsClock.tick(FPS)
degrees += 1
但是矩形的旋转方式很奇怪。如果你能让这个建议尽可能简单,尽可能接近我的代码,我会很感激,因为我才刚刚开始学习。另外,我知道使用矩形的图像更容易,但是我正在尝试使用表面。有人能帮忙吗?
1条答案
按热度按时间bttbmeg01#
你需要得到旋转后的矩形的边界矩形,并通过(
x
,y
)设置矩形的中心(参见如何使用PyGame围绕图像中心旋转图像?):围绕另一个点而不是中心点旋转对象要复杂得多。在PyGame中如何围绕偏心轴旋转图像的答案中描述了一个通用的解决方案。
完整示例: