如何在处理中执行if-function后执行它?

时间:2013-01-06 14:31:23

标签: if-statement for-loop collision-detection processing

我有一个if函数,每次2个对象相互重叠时执行,结果是HP应该只减少1,但是HP的值只要它们重叠就会持续减少,所以它会从3直到0。

int HP = 3;

void collision ()
{
  for(int i = 0; i < balls.length; i++) 
  {
    if (dist(balls[i].bx,balls[i].by,X,Y)< 15)
    {
      HP-=1;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

int HP = 3;

void collision ()
{
   bool check = false;
   for(int i = 0; i < balls.length; i++) 
   {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15) && check == false)
      {
         HP-=1;
         check = true;
      }
   }
}

替代:

int HP = 3;

void collision ()
{
   for(int i = 0; i < balls.length; i++) 
   {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15))
      {
         HP-=1;
         break;
      }
   }
}

替代

每次循环只有一次:

int HP = 3;

void collision () {
   int temp = 0;
   for(int i = 0; i < balls.length; i++) {
      if ((dist(balls[i].bx,balls[i].by,X,Y)< 15)) {
         temp += 1;
      }
   }
   if (temp > 0) {
      HP = HP - 1;
   }
}