Exemplo n.º 1
0
        public void goLeft()
        {
            Vector2 p;

            if (!Moteur2D.testCollisionFantom(this, "L"))
            {
                // Est-ce qu'on est tout à gauche ?
                if (fantom.Position.X > minX)
                {
                    p               = fantom.Position;
                    p.X            -= fantom.Vitesse.Y;
                    fantom.Position = p;
                }
                else // arrive de l'autre côté de l'écran
                {
                    p               = fantom.Position;
                    p.X             = maxX;
                    fantom.Position = p;
                }
                // Si l'utilisateur se déplace vers la gauche,
                // réinitialise le booléen de décalage
                alreadyShiftLeft = false;
            }
            // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
            // on le décale vers la gauche de 8px et le bool passe à true.
            else if ((fantom.Position.X % 20 != 0) && (alreadyShiftLeft == false))
            {
                alreadyShiftLeft = true;
                p                     = fantom.Position;
                p.X                  -= 8;
                fantom.Position       = p;
                this.alreadyCollision = true;
            }
            else // bloqué
            {
                alreadyCollision = true;
            }
            // Effectue un nouveau déplacement si une collision apparait ou un chemin lattérale
            if (fantom.Position.X % 20 == 0 && (!Moteur2D.testCollisionFantom(this, "U") || !Moteur2D.testCollisionFantom(this, "D")))
            {
                this.alreadyCollision = true;
            }
        }
Exemplo n.º 2
0
        public void goDown()
        {
            Vector2 p;

            if (!Moteur2D.testCollisionFantom(this, "D"))
            {
                // Est-ce qu'on est tout en bas ?
                if (fantom.Position.Y < maxY)
                {
                    p               = fantom.Position;
                    p.Y            += fantom.Vitesse.Y;
                    fantom.Position = p;
                }
                else // arrive de l'autre côté de l'écran
                {
                    p               = fantom.Position;
                    p.Y             = minY;
                    fantom.Position = p;
                }
                // Si l'utilisateur se déplace vers le bas,
                // réinitialise le booléen de décalage
                alreadyShiftDown = false;
            }
            // Si on a une colision et que l'utilisateur n'a pas encore été décalé,
            // on le décale vers le bas de 8px et le bool passe à true.
            else if ((fantom.Position.Y % 20 != 0) && (alreadyShiftDown == false))
            {
                alreadyShiftDown = true;
                p                     = fantom.Position;
                p.Y                  += 8; // 8 et non 10 pour éviter l'effet "téléportation"
                fantom.Position       = p;
                this.alreadyCollision = true;
            }
            else // bloqué
            {
                alreadyCollision = true;
            }
            // Effectue un nouveau déplacement si une collision apparait ou un chemin lattérale.
            if (fantom.Position.Y % 20 == 0 && (!Moteur2D.testCollisionFantom(this, "R") || !Moteur2D.testCollisionFantom(this, "L")))
            {
                this.alreadyCollision = true;
            }
        }