import pygame class Weapon(pygame.sprite.Sprite): def __init__(self,player,groups): super().__init__(groups) # 精灵类型为武器 self.sprite_type = 'weapon' # 根据玩家的状态获取方向('up', 'down', 'left', 'right') direction = player.status.split('_')[0] # 图像加载 # 根据方向和武器类型获取完整路径 full_path = f'../graphics/weapons/{player.weapon}/{direction}.png' # 加载武器图像并转换为透明度有alpha通道的格式 self.image = pygame.image.load(full_path).convert_alpha() # 放置位置 # 如果方向向右,则将武器放置在玩家矩形的右侧中间,稍微偏移一些 if direction == 'right': self.rect = self.image.get_rect(midleft = player.rect.midright + pygame.math.Vector2(0,16)) # 如果方向向左,则将武器放置在玩家矩形的左侧中间,稍微偏移一些 elif direction == 'left': self.rect = self.image.get_rect(midright = player.rect.midleft + pygame.math.Vector2(0,16)) # 如果方向向下,则将武器放置在玩家矩形的底部中间,稍微偏移一些 elif direction == 'down': self.rect = self.image.get_rect(midtop = player.rect.midbottom + pygame.math.Vector2(-10,0)) # 默认情况下(向上),将武器放置在玩家矩形的顶部中间,稍微偏移一些 else: self.rect = self.image.get_rect(midbottom = player.rect.midtop + pygame.math.Vector2(-10,0))