Java 我有一个由2个对象组成的数组,当我使用for循环时,两个对象都得到了它们中只有一个应该得到的更改

Java 我有一个由2个对象组成的数组,当我使用for循环时,两个对象都得到了它们中只有一个应该得到的更改,java,arrays,for-loop,libgdx,box2d,Java,Arrays,For Loop,Libgdx,Box2d,基本上我有这个代码: for(int i = 0; i < tnt.size; i++){ TNT t = tnt.get(i); if(cl.isLeft()){ t.getBody().setLinearVelocity(6,0); } if(cl.isRight()){t.getBody().setLinearVelocity(-6,0); } if(t.getBody().getPosition().x &g

基本上我有这个代码:

for(int i = 0; i < tnt.size; i++){

        TNT t = tnt.get(i);

        if(cl.isLeft()){ t.getBody().setLinearVelocity(6,0); }

        if(cl.isRight()){t.getBody().setLinearVelocity(-6,0); } 

        if(t.getBody().getPosition().x > 1888/PPM){t.getBody().setLinearVelocity(-6,0);     }

        if(t.getBody().getPosition().x < 31/PPM){t.getBody().setLinearVelocity(6,0);}



    }
for(int i=0;i1888/PPM){t.getBody().setLinearVelocity(-6,0);}
如果(t.getBody().getPosition().x<31/PPM){t.getBody().setLinearVelocity(6,0);}
}
如果我在这个数组中有两个对象,当对象#1发生某些事情时,它的行为方式会发生变化,但对象#2的变化与对象#1的变化相同。我希望他们独立行动,那么我该怎么做呢

下面是发生的情况的GIF:
当物体(TNT)碰到墙壁时,它应该改变方向,但在这里,它们都改变方向,而只有一个应该改变方向。

您的代码似乎是正确的。我不认为你的错误在代码里,你发了

请向我们展示您的TNT类-以及getBody()所引用的类。您是否使用任何静态方法/变量?例如,如果setLinearVelocity()或移动方向的变量是静态的,则此行为是正常的,因为静态方法/变量对于所有实例都是相同的

你确定,两种TNT级别的两种弹体是不同的吗?检查tnt.get(0.getBody()!=tnt.get(1.getBody()

更新: 忘记一切:


您正在调用“cl.isVänster()”。这个代码是什么意思?cl在运行for循环时不应更改,因此cl.isVänster()和cl.isHöger()也会为每个tnt对象返回相同的值。

不使用for循环,也不将其应用于两个对象?您正在更改for循环中的两个对象。您需要首先区分对象,即仅将这些更改应用于与墙碰撞的TNT。在循环内部,更改将应用于tnt数组中的所有对象。感谢您的回答@RaviRanjan如何区分循环中的对象?(很抱歉我不太懂,我是编程新手)我对图形和所有东西不太了解,但我想你可以跟踪对象的x-y轴。我编写了以下代码:if(tnt.get(0.getBody()!=tnt.get(1.getBody()){System.out.println(“working”);}它会打印“working”。请解释一下,cl.isVänster()的功能。这不会改变,因为cl不会改变。所以对于你循环中的每个tnt对象,你实际上都在做同样的事情。非常感谢!问题是没有将cl.Vänster()和cl.Höger()指定给数组中的特定对象。现在修好了!