Я разрабатываю игру в 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);
}