我正在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);
}
答案 0 :(得分:0)
首先,请注意您使用汽车索引访问(IceSprites)数组。如果您有不同数量的这些元素,则可以有例外。
您的代码仅检查每辆车是否与一个冰精灵元素碰撞。这是你想要的吗?
rManager.getInstance()。的 carArray [I] 强> .getCarSprite()。collidesWith(rManager.getInstance()。的 iceArray [I] 强> .getIceSprite( ))
也许你想检查一下你的车是否与世界上出现的任何冰元素碰撞。没有? 在这种情况下,你需要另一个冰元素循环。
我希望这有帮助,
最诚挚的问候