You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
1.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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))