Android 数组中每个对象的速度在碰撞时发生变化
我正在安德林开发一款游戏,我有一系列的赛车。我正在检查它们何时与屏幕上的其他对象发生碰撞,当它们发生碰撞时,该数组的单个索引应改变其速度。然而,屏幕上每辆车的速度也在变化 任何帮助都将不胜感激。请查看以下代码:Android 数组中每个对象的速度在碰撞时发生变化,android,andengine,Android,Andengine,我正在安德林开发一款游戏,我有一系列的赛车。我正在检查它们何时与屏幕上的其他对象发生碰撞,当它们发生碰撞时,该数组的单个索引应改变其速度。然而,屏幕上每辆车的速度也在变化 任何帮助都将不胜感激。请查看以下代码: this.registerUpdateHandler(new IUpdateHandler() { @Override public void onUpdate(final float pSecondsElapsed) { for
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
}
});
this.registerUpdateHandler(新的IUUpdateHandler(){
@凌驾
更新时的公共无效(最终浮点psecondsappeased){
对于(int i=0;i
更新代码:
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);
}
}
}
for(int i=0;i
更新代码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);
}
@覆盖
ManageDupDate上的受保护无效(浮点psecondsAppeased){
对于(int i=0;i
首先,请注意,您正在使用汽车索引访问(IceSprites)数组。如果这些元素的数量不同,则可以有例外
您的代码只检查每辆车是否与一个冰精灵元素碰撞。这是你想要的吗
rManager.getInstance()。carArray[i].getCarSprite().CollizeSwith(rManager.getInstance()。iceArray[i].getIceSprite())
也许你想检查一下你的车是否与你的世界中出现的任何冰元素相撞。不
在这种情况下,需要为ice元素创建另一个循环
我希望这有帮助,向佩德罗问好,谢谢你的快速回复。我有一堆汽车和一堆冰精灵,我想检查它们之间是否有任何类型的碰撞:)我有更好的碰撞,但同样的问题仍然存在。一旦发生碰撞,所有车辆都会受到影响!:(然后在每次更新时,您需要查看一个可碰撞元素,并针对您所在世界中的所有可碰撞元素对其进行测试。并对所有元素执行此操作。请注意,您可以避免对之前在同一更新中已测试过的元素进行某些测试。嗨,pedro,我想我理解了,但我仍然存在一些问题。我已添加了更新的代码te将所有元素都钉在第一个帖子上。不幸的是,如果发生1次碰撞,我不仅会遇到同样的问题,车阵列中的所有OBJCT都会发生变化,而且一些与冰的碰撞不起作用。日志显示它们正在被注册,但车速没有变化。我正在测试所有可能的元素,所以它不会发生变化没什么大不了的。谢谢!!注意你正在用世界上所有的冰元素测试每辆车。如果你的车的速度是2f,并且它与第一个冰元素相撞,那么速度将是3f。对吗?但是当你试着用第二个冰元素测试它时,你的车不会与它相撞,那么速度将是1f。你能发布这组吗CarSpeed()函数和car speed变量的声明?我怀疑这个变量可能是静态的。