gpt4 book ai didi

python - Pygame-旋转 Sprite 并同时跟随路径

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:49 26 4
gpt4 key购买 nike

我正在尝试制作一个被抛出的球的动画,我希望它旋转并同时遵循平滑的抛物线路径。但是,我似乎无法让 pygame.transform.rotate() 合作。

这是我到目前为止尝试过的:

import pygame
screen = pygame.display.set_mode((500, 500))
timer = pygame.time.Clock()
ball = pygame.sprite.Sprite()
ball.image = pygame.image.load("throwball.png")
ball.image = pygame.transform.scale(ball.image, (48,48))
ball.rect = ball.image.get_rect(topleft = (50,50))
ball.orig_image = ball.image
rotaterect = ball.rect

for i in range(60):
#pygame.draw.rect(screen, Color(255,255,255), ball.rect)
ball.image = pygame.transform.rotate(ball.orig_image, i*20)
rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
ball.rect.center = rotaterect.center
screen.blit(ball.image, ball.rect)
pygame.display.update()
timer.tick(60)
for e in pygame.event.get():
if e.type == pygame.QUIT:
pygame.quit()
sys.exit()
while 1:
for e in pygame.event.get():
if e.type == pygame.QUIT:
pygame.quit()
sys.exit()

每当我运行代码时,球都会以不规则的方式移动。我做了第二个 rect 试图控制位置,但球最终形成了这样的路径:this

显然每个框架的定位都有问题,但我不确定为什么任何框架都会错位,因为它们的位置是由它们的中心点决定的。

这是球的图片:

enter image description here

它是 16x16(正方形),所以我很惊讶为什么图像没有遵循干净的路径。

最佳答案

请注意,旋转后的图像大小不同。参见 How do I rotate an image around its center using Pygame? .

获取旋转图像的矩形,并将矩形的中心设置为辅助矩形 rotaterect 的中心。这导致图像围绕中心对称对齐。
您错过了将 ball.rect 更新为旋转图像的实际大小:

ball.rect = ball.image.get_rect()
rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
ball.rect.center = rotaterect.center

例子:

for i in range(60):
ball.image = pygame.transform.rotate(ball.orig_image, i*20)
ball.rect = ball.image.get_rect()
rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
ball.rect.center = rotaterect.center
screen.blit(ball.image, ball.rect)
pygame.display.update()

关于python - Pygame-旋转 Sprite 并同时跟随路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com