How to make object(sprite) deleted when collided with other object in cocos2d android? -
to learn cocos2d-android game engine, started developing game using tutorial, http://dan.clarke.name/2011/05/how-to-make-a-simple-android-game-with-cocos2d-pt2-%e2%80%93-rotating-turrets/ , added 3 ships in order make more attractive , cannons fixed on it, if fireball falls sky on ship, ship burnt , destroyed keeping concept did coding, when fireballs falls on ship isnt getting destroyed(deleted), tried in many ways not solution can tell why ships not destroyed please? here's coding it.
public void update(float dt) { linkedlist<ccsprite> projectilestodelete = new linkedlist<ccsprite>(); (ccsprite projectile : _projectiles) { cgrect projectilerect = cgrect.make(projectile.getposition().x - (projectile.getcontentsize().width / 2.0f), projectile.getposition().y - (projectile.getcontentsize().height / 2.0f), projectile.getcontentsize().width, projectile.getcontentsize().height); linkedlist<ccsprite> targetstodelete = new linkedlist<ccsprite>(); (ccsprite target : _targets) { cgrect targetrect = cgrect.make(target.getposition().x - (target.getcontentsize().width), target.getposition().y - (target.getcontentsize().height), target.getcontentsize().width, target.getcontentsize().height); if (cgrect.intersects(projectilerect, targetrect)) targetstodelete.add(target); } linkedlist<ccsprite> shipstodelete = new linkedlist<ccsprite>(); (ccsprite ship : _ships) { cgrect shiprect = cgrect.make(ship.getposition().x - (ship.getcontentsize().width), ship.getposition().y - (ship.getcontentsize().height), ship.getcontentsize().width,ship.getcontentsize().height); (ccsprite target : _targets) { cgrect targetrect = cgrect.make(target.getposition().x - (target.getcontentsize().width), target.getposition().y - (target.getcontentsize().height), target.getcontentsize().width,target.getcontentsize().height); if (cgrect.intersects(targetrect, shiprect)) { shipstodelete.add(ship); break; } } } (ccsprite target : targetstodelete) { _targets.remove(target); removechild(target, true); } if (targetstodelete.size() > 0) projectilestodelete.add(projectile); (ccsprite ship : shipstodelete) { _ships.remove(ship); removechild(ship, true); } } (ccsprite projectile : projectilestodelete) { _projectiles.remove(projectile); removechild(projectile, true); if (_shipdestroyed > 0) { _shipdestroyed = 0; ccdirector.shareddirector().replacescene(gameoverlayer.scene("you win!")); } } }
add code intersection of projectile verses ship this
linkedlist<ccsprite> targetstodelete = new linkedlist<ccsprite>(); for (ccsprite target : _targets) { cgrect targetrect = cgrect.make(target.getposition().x - (target.getcontentsize().width), target.getposition().y - (target.getcontentsize().height), target.getcontentsize().width, target.getcontentsize().height);
system.out.println("projectiles delete continue... : " + volume); linkedlist<ccsprite> shipstodelete = new linkedlist<ccsprite>(); { (ccsprite ship : _ships) { cgrect shiprect = cgrect.make(ship.getposition().x - (ship.getcontentsize().width/2), ship.getposition().y - (ship.getcontentsize().height/2), ship.getcontentsize().width, ship.getcontentsize().height); system.out.println("ships delete continue... : " + volume); if (cgrect.intersects(targetrect, shiprect)) { system.out.println("ships intersected:)... : " + volume); shipstodelete.add(ship); } if (targetstodelete.size() > 0) shipstodelete.add(ship); } (ccsprite ship : shipstodelete) { _ships.remove(ship); removechild(ship, true); ccdirector.shareddirector().replacescene(gameoverlayer.scene("you win!")); } } }
and add sprite in addsomeothercode() method, , delete sprite giving code as
public void spritemovefinished(object sender) { ccsprite sprite = (ccsprite)sender; if (sprite.gettag() == 1) { if (sprite.gettag() == 1) _ships.remove(sprite); }
Comments
Post a Comment