checkShotToPlayerCollision()
method to the CollisionManager class:private void checkShotToPlayerCollisions() { foreach (Sprite shot in enemyManager.EnemyShotManager.Shots) { if (shot.IsCircleColliding( playerManager.playerSprite.Center, playerManager.playerSprite.CollisionRadius)) { shot.Location = offScreen; playerManager.Destroyed = true; explosionManager.AddExplosion( playerManager.playerSprite.Center, Vector2.Zero); } } }
checkEnemyToPlayerCollisions()
method to the CollisionManager class:private void checkEnemyToPlayerCollisions() { foreach (Enemy enemy in enemyManager.Enemies) { if (enemy.EnemySprite.IsCircleColliding( playerManager.playerSprite.Center, playerManager.playerSprite.CollisionRadius)) { enemy.Destroyed = true; explosionManager.AddExplosion( enemy.EnemySprite.Center, enemy.EnemySprite.Velocity / 10); playerManager.Destroyed = true; explosionManager.AddExplosion( playerManager.playerSprite.Center, Vector2.Zero); } } }
checkAsteroidToPlayerCollisions()
method to the CollisionManager class:private void checkAsteroidToPlayerCollisions() { foreach (Sprite asteroid in asteroidManager.Asteroids) { if (asteroid.IsCircleColliding( playerManager.playerSprite.Center, playerManager.playerSprite.CollisionRadius)) { explosionManager.AddExplosion( asteroid.Center, asteroid.Velocity/10); asteroid.Location = offScreen; playerManager.Destroyed = true; explosionManager.AddExplosion( playerManager.playerSprite.Center, Vector2.Zero); } } }
There is only a single loop in each of the ...ToPlayerCollisions()
methods, since all of the objects are being compared to the single player object, but otherwise the code is very similar. In each case, the player is marked as Destroyed
, which we will detect during Game1's update loop.
18.191.135.224