/// <summary> /// �Ƴ����� /// </summary> /// <param name="sender"></param> void spriteMoveFinished(object sender) { CCSprite sprite = (CCSprite)sender; if (sprite.tag == 1) { _targets.Remove(sprite); life--; string msg = string.Format("Count:{0},life:{1},Level:{2}", projectilesDestroyed, life, level.level); notic.setString(msg); if (life <= 0) { GameOverScene pScene = new GameOverScene(false); CCDirector.sharedDirector().replaceScene(pScene); } } else if (sprite.tag == 2) { _projectiles.Remove(sprite); } this.removeChild(sprite, true); }
public void updates(float dt) { List<CCSprite> projectilesToDelete = new List<CCSprite>(); List<CCSprite> targetToDelete = new List<CCSprite>(); for (int i = 0; i < _projectiles.Count; i++) { CCSprite projectile = _projectiles[i]; CCRect projectileRect = new CCRect( projectile.position.x - projectile.contentSize.width / 2, projectile.position.y - projectile.contentSize.height / 2, projectile.contentSize.width, projectile.contentSize.height); bool monsterHit = false; foreach (CCSprite target in _targets) { CCRect targetRect = new CCRect( target.position.x - target.contentSize.width / 2, target.position.y - target.contentSize.height / 2, target.contentSize.width, target.contentSize.height); if (CCRect.CCRectIntersetsRect(projectileRect, targetRect)) { monsterHit = true; Monster monster = (Monster)target; monster.hp--; if (monster.hp <= 0) { targetToDelete.Add(target); } break; } } foreach (CCSprite target in targetToDelete) { _targets.Remove(target); projectilesDestroyed++; string msg = String.Format("Count:{0},life:{1},Level:{2}", projectilesDestroyed, life, level.level); notic.setString(msg); if (projectilesDestroyed >= level.levelCount) { GameOverScene pScene = new GameOverScene(true); CCDirector.sharedDirector().replaceScene(pScene); } this.removeChild(target, true); } if (monsterHit) { projectilesToDelete.Add(projectile); SimpleAudioEngine.sharedEngine().playEffect(@"sounds/explosion"); } } foreach (CCSprite projectile in projectilesToDelete) { _projectiles.Remove(projectile); quitProjectiles++; if (quitProjectiles > 10) { //GameOverScene pScene = new GameOverScene("You Lost"); //CCDirector.sharedDirector().replaceScene(pScene); } this.removeChild(projectile, true); } projectilesToDelete.Clear(); }