If statement 如何停止if函数一旦执行';在处理过程中执行了什么?
我有一个if函数,每当两个对象相互重叠时执行,结果是HP应该只减少1,但是只要它们重叠,HP的值就会一直减少,所以它会从3直接变为0If 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; 无效碰撞() { 对于
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;
}
}