removing SPRITE (problem)

:)HI!

a-10-tion to david! please help or anyone who knows how to do this.

this is the problem. in my gun, i have a gun (it’s bullet is made up from SPRITE) when the bullet touches/hits the enemy the enemy and the bullet SPRITES should be removed from the layer manager. so this is my code:

if(bullet.collidesWith(enemy)){
//moveBullet is just a boolean value which if it is true, the bullet sprite will move and vice versa
moveBullet = false;
layerManager.remove(bullet);
layerManager.remove(enemy);
}

this code really DOES remove the sprites on the layer manager but on my observation, the layerManager only makes the “bullet” and “enemy” SPRITES invisible because for example at pixel (117,150) the “bullet” and “enemy” SPRITE collided, the code above will remove them both but notice that i have other enemis too with this code for collision detection:

if(bullet.collidesWith(enemy2)){
//moveBullet is just a boolean value which if it is true, the bullet sprite will move and vice versa
moveBullet = false;
layerManager.remove(bullet);
layerManager.remove(enemy2);
}

on the upper code, when the “bullet” hits “enemy” at xy (117,150), the bullet will stope moveing and the layerManager will remove them both… but i noticed that when “enemy2” touches the xy(117,150) (although the “bulllet” sprite is not in ther, the “enemy2” sprite dissappears, i dunno, i think the method “remove” in layer manager just makes the sprite invisible…

THE HELP:
please if you know how to COMPLETELY remove the sprites in the layerManager please let me know. thanks alot!

The method “remove” in LayerManager just removes your bullet from the LayerManager’s internal list, so that it won’t be drawn when you call the LayerManager’s “paint” method. It doesn’t change the bullet itself, so the code:

if(bullet.collidesWith(enemy2)){

is unaffected by whether or not you removed the bullet from the LayerManager. (The collidesWith method just compares both objects’ x, y, width and height to see if they overlap). You could fix your code like this:

if(moveBullet && bullet.collidesWith(enemy2)){

though it might then be wise to rename “moveBullet” as “bulletActive” or something similar.

Think of a LayerManager as an object that manages layers (i.e. Sprites and/or TiledLayers) for you. You add some layers to it, and it manages them (i.e. calls their paint methods in the right order when you call its own paint method). If you remove them from it, it stops managing them, but they still exist just as before.