陨石旋转属性
陨石类 Mob,添加新属性
rot:旋转角度, ‘rotation’ 的缩写。
rot_speed :旋转速度;
last_update:记录每帧刷新时间(计算动画间隔用)
pygame.time.get_ticks() 获取从 pygame.time.Clock() 启动以来经过了多少毫秒。
class Mob(pygame.sprite.Sprite):
def __init__(self):
# ...
self.rot = 0
self.rot_speed = random.randrange(-8, 8)
self.last_update = pygame.time.get_ticks()
图像旋转
陨石类 Mob,添加新方法 rotate()
def rotate(self):
now = pygame.time.get_ticks()
if now - self.last_update > 50:
self.last_update = now
self.rot = (self.rot + self.rot_speed) % 360
new_image = pygame.transform.rotate(self.image_orig, self.rot)
old_center = self.rect.center
self.image = new_image
self.rect = self.image.get_rect()
self.rect.center = old_center
陨石类 Mob,update 方法中,添加调用函数 rotate()
def update(self):
self.rotate()
# ....
随机陨石图像
加载所有 Meteor 图像并将它们放入一个列表中:
meteor_images = []
meteor_list =['meteorBrown_big1.png','meteorBrown_med1.png',
'meteorBrown_med1.png','meteorBrown_med3.png',
'meteorBrown_small1.png','meteorBrown_small2.png',
'meteorBrown_tiny1.png']
for img in meteor_list:
meteor_images.append(pygame.image.load(path.join(img_dir, img)).convert())
陨石类 Mob,修改陨石随机选择一个图像:
class Mob(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image_orig = random.choice(meteor_images)
self.image_orig.set_colorkey(BLACK)
self.image = self.image_orig.copy()