我想要用pygame写消灭病毒这一游戏,现在写到病毒圆形后面一直旋转的三角形,使用pygame.transform.rotate却不能与圆同心旋转
# 病毒类
class Viruses(pygame.sprite.Sprite):
def __init__(self, image, position, x_speed, y_speed,screen):
'''
初始化
:param image: 图片名字
:param position: 位置
:param x_speed: 水平的速度
:param y_speed: 竖直的速度
'''
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load(image)
self.rect = self.image.get_rect()
self.rect.center = position
self.X_speed = x_speed
self.Y_speed = y_speed
self.image2 = pygame.image.load('images/8 (13).png')
self.rect2 = self.image.get_rect()
self.rect2.centerx = self.rect.centerx
self.rect2.centery = self.rect.centery - 40
#可见性
self.visible = True
self.screen = screen
self.angle = 1
''' 移动 '''
def update(self, *args):
self.rect = self.rect.move(self.X_speed, self.Y_speed)
self.rect2 = self.rect2.move(self.X_speed, self.Y_speed)
def check_edges(self):
#如果位于屏幕边缘,就返回True
screen_rect = self.screen.get_rect()
if self.rect.right >= screen_rect.right:
return True
elif self.rect.left <= 0:
return True
else:
return False
def blitme(self):
#在指定位置绘制三角
self.new_image2 = pygame.transform.rotate(self.image2, self.angle)
self.angle += 1
newRect = self.new_image2.get_rect()
# newRect.left, newRect.top = self.rect2.left, self.rect2.top
newRect.center = self.rect2.center
self.screen.blit(self.new_image2,newRect)
屏幕更新函数
def update_screen(ai_settings,screen,ship,virals,bullets,jishen,back,flash,bombs,bflash,sanjiaos):
#更新屏幕上的图像,并切换到新屏幕
#每次循环时都重绘屏幕
back.blitme()
bullets.draw(screen)
for viral in virals:
viral.blitme()
virals.draw(screen)
flash.draw(ship)
ship.blitme()
jishen.blitme()
for bomb in bombs:
if bomb.visible:
bomb.draw()
#让最近绘制的屏幕可见
pygame.display.flip()
每次三角形都不能和圆同心旋转
希望大佬们给我一些帮助,非常感谢
首先,圆形转不转,肉眼应该看不出来的
其次:for viral in virals:
viral.blitme()
和
virals.draw(screen)
这两个重复了吧
最后
def blitme(self):
newRect = self.new_image2.get_rect()旋转图片不需要重新获取位置数据吧
你想问的事我没看出来,不好意思
我的思路:获取圆心的位置,找到一个点,这个点到圆心的距离是固定的,角度随时间增加。就是三角函数