Object Cocos2d删除远距离对象(java)

Object Cocos2d删除远距离对象(java),object,range,cocos2d-android,Object,Range,Cocos2d Android,嗨,我有雪碧,是格拉纳德^^ 问题是它何时爆炸。它应该杀死远处的所有目标(在本例中,所有目标都在屏幕上),但它会随机杀死它们 public void Explode(Object sender) { ArrayList<Enemy> targetsToBlow = new ArrayList<Enemy>(); targetsToBlow.addAll(targets); Bullet bullet = (Bullet)sender; fl

嗨,我有雪碧,是格拉纳德^^

问题是它何时爆炸。它应该杀死远处的所有目标(在本例中,所有目标都在屏幕上),但它会随机杀死它们

public void Explode(Object sender)
{
    ArrayList<Enemy> targetsToBlow = new ArrayList<Enemy>();
    targetsToBlow.addAll(targets);
    Bullet bullet = (Bullet)sender;
    float x = bullet.getPosition().x;
    float y = bullet.getPosition().y;
//  Log.i("Explode", "boom");
//  Log.i("Target",String.valueOf(y));
    for (int i=0;i<targetsToBlow.size();i++) 
    {
        Enemy enemy = targetsToBlow.get(i);
        float xd = enemy.getPosition().x - x;
        float yd = enemy.getPosition().y - y;
        float distance = (float) Math.sqrt(xd*xd + yd*yd);
        Log.i("Distance", String.valueOf(distance));
        if(distance<20000/2)
        {
            enemy.setHp(bullet.dmg);
            Log.i("Explode", "boomed1");
        }
        else if(distance<=20000)
        {
            enemy.setHp(bullet.dmg/2);
            Log.i("Explode", "boomed2");
        }
        if(enemy.getHp()<=0)
        {               
            targets.remove(enemy);
            removeChild(enemy, true);
            money++;
            moneyLabel.setString("GOLD: "+money);
        }
        targetsToBlow.remove(i);
    }
    projectiles.remove(bullet);
    removeChild(bullet, true);

}
public void爆炸(对象发送器)
{
ArrayList targetsToBlow=新的ArrayList();
targetsToBlow.addAll(目标);
Bullet Bullet=(Bullet)发送器;
float x=bullet.getPosition().x;
float y=bullet.getPosition().y;
//Log.i(“爆炸”、“爆炸”);
//Log.i(“目标”,String.valueOf(y));

对于(int i=0;i来说,问题在于删除了arraylist项之后,它们的索引中出现了问题。我认为这就是为什么其中一些项会留在现场的原因

我在简单的拍摄中也做了同样的事情:

public void Explode(Object sender)
{
    ArrayList<Enemy> targetsToDelete = new ArrayList<Enemy>();      

    Bullet bullet = (Bullet)sender;


         for (Enemy enemy : targets){
             if(isEnemyInRange(bullet, enemy, 100))
                {
                    enemy.setHp(bullet.dmg);
                    if(enemy.getHp()<=0)
                    {
                        targetsToDelete.add(enemy);
                    }
                }

            }
            for (Enemy target : targetsToDelete){
                targets.remove(target);
                removeChild(target, true);
            }

    projectiles.remove(bullet);
    removeChild(bullet, true);

}
public void爆炸(对象发送器)
{
ArrayList targetsToDelete=新建ArrayList();
Bullet Bullet=(Bullet)发送器;
用于(敌人:目标){
如果(射程(子弹,敌人,100))
{
敌方.setHp(bullet.dmg);
if(敌方的getHp()