Разработвам игра в 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);
}