6.陨石动画

陨石旋转属性陨石类 Mo...

陨石旋转属性
陨石类 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()

blank