基本上我有这段代码:
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)接触墙壁时,它应该改变方向,但是在这里它们都改变方向,只有一个应该改变方向。
答案 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对象返回相同的值。