用pygame制作的2D游戏,多个敌我单位从屏幕的左右端出发参加战斗,在屏幕中间相遇,相互攻击减血,想问问有没有好的实现方法

另外能不能使得敌我单位每个人攻击之间有属于自己的间隔时间,,而不是拖慢屏幕显示的时间间隔。谢谢!

用碰撞检测,根据碰撞检测返回的结果改变对应精灵的行为
攻击间隔你可以做个update写在精灵类里面
类似

attack_time = 30#假设每30帧攻击一次
class Entity(pygame.sprite.Sprite):
  def __init__(self):
  super().__init__()
    pass#略
    self.attack_timer = 0#初始化timer
  def update(self):#重写特殊方法,可以被精灵组从group层面直接调用
    self.attack_timer += 1
    #到达帧率时调用攻击,现在这种写法无论遇不遇到敌人都会攻击,可以通过碰撞检测更改行为逻辑
    if self.attack_timer >= attack_time:
      self.attack()#攻击
      self.attack_timer = 0#重置
  def attack(self):
      pass#略
...
pygame.init()
gameTick = pygame.time.Clock()#帧率初始化 
entity_pool=pygame.sprite.Group()#实体精灵组,在实体生成部分将生成的实体add进来
while game_run:#游戏主逻辑
  gameTick.tick(60)#帧率设置
  entity_pool.update()#刷新攻击冷却时间

参考资料: 【Python】Pygame.sprite中Group对象的特殊方法_KING_OF_WEST的专栏-CSDN博客 在使用pygame.sprite里面的group对象时,如果要对group列表中的每一个对象进行同样的方法(method)调用,普适的代码块如下:for sprite in group.sprites(): sprite.method()#实例for laser in lasers.sprites(): laser.blitme()上例中lasers是基于lase... https://blog.csdn.net/KING_OF_WEST/article/details/97618755