我有一个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;
}
}
}
答案 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;
}
}