Пример #1
0
        private Collision.Direction CollisionDirection(Rectangle entity1, Rectangle entity2)
        {
            Rectangle collisionRectangle = Rectangle.Intersect(entity1, entity2);

            Collision.Direction direction = Collision.Direction.none;
            if (collisionRectangle.Width > collisionRectangle.Height)
            {
                if (collisionRectangle.Y == entity1.Y)
                {
                    direction = Collision.Direction.up;
                }
                else
                {
                    direction = Collision.Direction.down;
                }
            }
            else if (collisionRectangle.Height >= collisionRectangle.Width)
            {
                if (collisionRectangle.X == entity1.X)
                {
                    direction = Collision.Direction.left;
                }
                else
                {
                    direction = Collision.Direction.right;
                }
            }
            return(direction);
        }
Пример #2
0
 // appel du constructeur parent GameObject
 public Player(int totalAnimationFrames, int frameWidth, int frameHeight, World world)
     : base(totalAnimationFrames, frameWidth, frameHeight, world)
 {
     direction          = Collision.Direction.RIGHT;
     frameIndex         = framesIndex.RIGHT_1;
     _collidedDirection = Collision.Direction.NONE;
 }
Пример #3
0
 public static Collision.Direction Invert(this Collision.Direction direction)
 {
     return(direction switch
     {
         Left => Right,
         Right => Left,
         Top => Bottom,
         Bottom => Top,
         _ => direction
     });
Пример #4
0
 public void changeRoom(int newRoom, Collision.Direction direction)
 {
     util.keyPressedTempVariable = true;
     oldRoom = currentRoom;
     collisionManager.ClearNotLink();
     projectileHandler.Clear();
     util.roomNumber = newRoom;
     foreach (Room r in roomList)
     {
         if (r.getRoomNumber() == newRoom)
         {
             currentRoom = r;
         }
     }
     currentMainGameState = new MainState(this, currentRoom);
     currentGameState     = new TransitionState(this, oldRoom, currentRoom, direction);
 }
Пример #5
0
        // Paramétrage des touches du clavier
        public void Move(KeyboardState state)
        {
            if (state.IsKeyDown(Keys.Z))
            {
                direction = Collision.Direction.TOP;

                if (!Collision.Collided(this, world))
                {
                    if (collidedDirection != Collision.Direction.TOP)
                    {
                        collidedDirection = Collision.Direction.NONE;
                        Position.Y       -= 1;
                    }
                }
            }
            if (state.IsKeyDown(Keys.Q))
            {
                direction = Collision.Direction.LEFT;

                if (!Collision.Collided(this, world))
                {
                    if (collidedDirection != Collision.Direction.LEFT)
                    {
                        collidedDirection = Collision.Direction.NONE;
                        Position.X       -= 1;
                    }
                }
            }
            if (state.IsKeyDown(Keys.S))
            {
                direction = Collision.Direction.BOTTOM;

                if (!Collision.Collided(this, world))
                {
                    if (collidedDirection != Collision.Direction.BOTTOM)
                    {
                        collidedDirection = Collision.Direction.NONE;
                        Position.Y       += 1;
                    }
                }
            }
            if (state.IsKeyDown(Keys.D))
            {
                // on assigne la direction droite à la touche D
                direction = Collision.Direction.RIGHT;

                // appel méthode statique Collided. Si elle renvoie false 0 en collision
                if (!Collision.Collided(this, world))
                {
                    //Si par exemple, on se dirige vers la droite, tout droit vers le mur, d'un coup on s'arrête.
                    //Pour pouvoir changer de direction, il faut détecter si la touche qu'on enfonce est différente
                    //par rapport à la direction où on a réalisé notre récente collision.
                    //!Avec un simple test, si on prend le test de la touche Q pour la gauche,
                    //on teste si la touche est différente, on change notre variable de collision à sa valeur par défaut NONE
                    //puis on décrémente notre position X vu que nous nous dirigeons vers la gauche
                    if (collidedDirection != Collision.Direction.RIGHT)
                    {
                        collidedDirection = Collision.Direction.NONE;
                        Position.X       += 1;
                    }
                }
            }
        }