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

I have an Array of 2 objects, when I use a for loop, both of the object gets the change that only one of them should have

基本上我有这个代码:

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)碰到墙时它应该改变方向,但这里它们都改变方向,而只有一个应该改变方向。

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

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

你确定,两个 TNT classes 的两个 body-objets 是不同的吗?检查是否 tnt.get(0).getBody() != tnt.get(1).getBody().

更新: 忘记一切:

您正在呼叫 "cl.isVänster()"。这段代码是什么意思? cl 在 运行 你的 for 循环时不应该改变,所以 cl.isVänster() 和 cl.isHöger() 也 returns 每个 tnt 对象的相同值。