我有一个包含2个对象的数组,当我使用for循环时,两个对象都会得到更改,其中只有一个应该有

时间:2015-06-11 10:12:15

标签: 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 > 1888/PPM){t.getBody().setLinearVelocity(-6,0);     }

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



    }

如果我在这个数组中有2个对象,当对象#1发生某些事情时它会改变它应该如何行动,但对象#2得到与对象#1相同的变化。我希望他们独立行动,那我该怎么做呢?

以下是发生的事情的GIF:https://gfycat.com/HelplessEmotionalCornsnake 当物体(TNT)接触墙壁时,它应该改变方向,但是在这里它们都改变方向,只有一个应该改变方向。

1 个答案:

答案 0 :(得分:0)

你的守则似乎是正确的。我认为你的错误不在代码中,你发布了。

请告诉我们您的TNT课程和getBody()课程。你使用任何静态方法/变量?例如,如果setLinearVelocity()或移动方向的变量是静态的,则此行为是正常的,因为静态方法/变量对于所有实例都是相同的。

你确定,两个TNT课程的两个身体对象是不同的吗?检查tnt.get(0).getBody()!= tnt.get(1).getBody()。

<强>更新 忘了一切:

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