If statement 如何停止if函数一旦执行';在处理过程中执行了什么?

If statement 如何停止if函数一旦执行';在处理过程中执行了什么?,if-statement,for-loop,collision-detection,processing,If Statement,For Loop,Collision Detection,Processing,我有一个if函数,每当两个对象相互重叠时执行,结果是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; } } } inthp=3; 无效碰撞() { 对于

我有一个if函数,每当两个对象相互重叠时执行,结果是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;
    }
  }
}
inthp=3;
无效碰撞()
{
对于(int i=0;i
int HP=3;
无效碰撞()
{
布尔检查=假;
对于(int i=0;i
备选方案:

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;
      }
   }
}
inthp=3;
无效碰撞()
{
对于(int i=0;i
另类


每次循环仅一次:

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;
   }
}
inthp=3;
无效碰撞(){
内部温度=0;
对于(int i=0;i0){
HP=HP-1;
}
}

processing programming language如果我在代码顶部而不是在void collision()内部引用“boolean check=false;”,那么第一种语言在一定程度上是有效的。但是if函数不是每次对象重叠时都执行,它只执行一次。如果我理解正确,您希望if语句在整个循环中只工作一次,对吗?或者,您的意思是它应该在每次循环时只工作一次?在每次循环时只工作一次。或者更好的是,如果if语句的执行有延迟,那么对象之间就有时间发生另一次冲突。谢谢你帮我解决这个问题。这一直困扰着我。试试最后一个选择,它允许你设置最大值(HP-=max)
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;
   }
}