我正在AndEngine中开发一款游戏,并且我有一系列汽车激情。我正在检查它们何时与屏幕上的其他对象发生碰撞,以及它们何时碰撞,数组的单独索引应该会改变速度。然而,每辆车在屏幕上的速度也都在变化。碰撞时阵列中每个物体的速度变化
任何帮助,将不胜感激。请附上代码如下:
this.registerUpdateHandler(new IUpdateHandler() {
@Override
public void onUpdate(final float pSecondsElapsed) {
for (int i = 0; i < rManager.getInstance().carArray.length; i++)
{
if(rManager.getInstance().carArray[i].getCarSprite().collidesWith(rManager.getInstance().iceArray[i].getIceSprite())) {
Log.e("test", "ice collision");
rManager.getInstance().carArray[i].setCarSpeed(3f);
} else {
rManager.getInstance().carArray[i].setCarSpeed(0.5f);
}
}
}
@Override
public void reset() {
// TODO Auto-generated method stub
}
});
更新的代码:
for (int i = 0; i < rManager.getInstance().carArray.length; i++)
{
for (int j = 0; j < rManager.getInstance().iceArray.length; j++)
{
if(rManager.getInstance().carArray[i].getCarSprite().collidesWith(rManager.getInstance().iceArray[j].getIceSprite())) {
Log.e("log", "CAR COLLIDED WITH ICE LOL");
rManager.getInstance().carArray[i].setCarSpeed(3f);
} else {
rManager.getInstance().carArray[i].setCarSpeed(1f);
}
}
}
更新的代码2:
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
for (int i = 0; i < rManager.getInstance().carArray.length; i++)
{
for (int j = 0; j < rManager.getInstance().iceArray.length; j++)
{
if(this.getX() < (rManager.camera.getWidth() + this.getWidth())){
this.setPosition(this.getX() + (rManager.getInstance().carArray[i].getSpeed() + speedMod), this.getY());
} else {
this.setPosition(0 - this.getWidth(), this.getY());
}
if (rManager.getInstance().iceArray[j].getIceSprite().collidesWith(rManager.getInstance().carArray[i].getCarSprite()))
{
Log.e("log", "car collided with ice");
this.setPosition(this.getX() + (rManager.getInstance().carArray[i].getSpeed() + 2f), this.getY());
}
}
}
super.onManagedUpdate(pSecondsElapsed);
}
请你张贴setCarSpeed()函数和车速变量的声明?我怀疑变量可能是静态的。 –