Пример #1
0
 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;
     }
 }
Пример #2
0
        //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);
        }
Пример #3
0
        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]);
                }
            }
        }