private void levelBoundCollision(Models.Gameworld gameWorld, Vector2 prePosition) { if (!gameWorld.getPlayer().BoundingBox.Intersects(gameWorld.LevelBounds)) { gameWorld.getPlayer().Position = new Vector2(prePosition.X, prePosition.Y); gameWorld.getPlayer().Velocity = Vector2.Zero; } }
//Checks for collisions on the Player. private void playerCollisions(Models.Gameworld gameWorld, Vector2 movementVector, Vector2 rightStick, GameTime gameTime) { Vector2 prePosition = gameWorld.getPlayer().Position; gameWorld.getPlayer().update(movementVector, rightStick, gameTime); //for (int i = 0; i < gameWorld.getRock().Count(); i++) foreach (Models.Collidable rock in gameWorld.getRock()) { if (rock.BoundingBox.Intersects(gameWorld.getPlayer().BoundingBox)) { if (perPixelCollisionDetection(gameWorld.getPlayer(), rock)) { gameWorld.getPlayer().Position = new Vector2(prePosition.X, prePosition.Y); //gameWorld.getPlayer().Velocity = (Vector2.Zero); knockback(gameWorld.PlayerObject, rock); break; } } } levelBoundCollision(gameWorld, prePosition); }
private void checkPlayerProjectileCollisions(Models.Gameworld gameWorld) { List<int> collidedProjectileIndexes = new List<int>(); bool flaggBecauseFuckYouThatsWhy = false; for (int i = 0; i < gameWorld.getPlayer().BulletList.Count; i++) { flaggBecauseFuckYouThatsWhy = false; for (int j = 0; j < gameWorld.getRock().Count; j++) { if (gameWorld.getRock()[j].BoundingBox.Intersects(gameWorld.getPlayer().BulletList[i].BoundingBox)) { if (perPixelCollisionDetection(gameWorld.getPlayer().BulletList[i], gameWorld.getRock()[j])) { collidedProjectileIndexes.Add(i); rockCollisionIndex.Add(j); rockProjectileCollisions.Add(gameWorld.getPlayer().BulletList[i]); rockProjectileCollisions.Add(gameWorld.getRock()[j]); flaggBecauseFuckYouThatsWhy = true; } } if (flaggBecauseFuckYouThatsWhy) break; } if (!flaggBecauseFuckYouThatsWhy) { for (int l = 0; l < gameWorld.EnemyList.Count; l++) { if (gameWorld.EnemyList[l].BoundingBox.Intersects(gameWorld.getPlayer().BulletList[i].BoundingBox)) { if (perPixelCollisionDetection(gameWorld.getPlayer().BulletList[i], gameWorld.EnemyList[l])) { collidedProjectileIndexes.Add(i); enemyCollisionIndex.Add(l); enemyProjectileCollisions.Add(gameWorld.getPlayer().BulletList[i]); enemyProjectileCollisions.Add(gameWorld.EnemyList[l]); flaggBecauseFuckYouThatsWhy = true; } } if (flaggBecauseFuckYouThatsWhy) break; } } } //Remove collided projectiles. if (collidedProjectileIndexes.Count > 0) { collidedProjectileIndexes.Sort(); //for (int i = 0; i < collidedProjectileIndexes.Count; i++) for (int i = collidedProjectileIndexes.Count - 1; i >= 0; i--) { gameWorld.getPlayer().BulletList.RemoveAt(collidedProjectileIndexes[i]); } } }