2命中检测敌人的sdlc++

2 Hit detection on enemys SDL c++

本文关键字:sdlc++ 敌人 检测      更新时间:2023-10-16

嘿,伙计们在我的SDL游戏中得到了这个2命中碰撞,只适用于敌人的前排,有时它接管了'maxHit'变量。不知道为什么这是我到目前为止所拥有的:Collideswith()工作得很好,这只适用于一次命中,只需要一种方法来增加数组中每个敌人AKA外星人的某种计数器。

 int maxHit = 2;
 int hitCount = 0;
  // Detect collisions
  for(auto p : projectiles)
  {
    for(auto a : aliens)
    {
      if(p->CollidesWith(a) && hitCount == maxHit)
      {
        p->HandleCollision();
        a->HandleCollision();       
      }  
      if(p->CollidesWith(a) && hitCount != maxHit)
      {  
        ++hitCount; 
      }
    }
  }
  1. 交换循环
  2. 在"aliens"循环中声明hitCount

例句:

for(auto a : aliens) 
{
    for(auto p : projectiles) 
    {
        int hitCount = 0;
        //...
    }
}

你也可能想要改写你的if子句来更清楚地陈述你的意图(并提高性能):

if(p->CollidesWith(a))
{
    if(hitCount == maxHit)
    {
        // ...
    }
    else
    {
        // ...
    }
}