我有一个包含 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 对象的相同值。
基本上我有这个代码:
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 对象的相同值。