Problème avec FarseerPhysics

[Résolu]
Signaler
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Bonjour,
je requiert votre aide pour un problème avec Farseer Physics.

Je viens d'installer la librairie Farseer Physics, je l'ai inclus dans mon projet sans problème, et la compilation marche parfaitement, mais le résultat obtenu et loin d'être celui attendu...

J'essai le code source donné dans un ouvrage, qui permet d'appliquer des forces sur un body en fonction des touches pressées.

Voici le constructeur :
      Body body;
        public Player(PhysicsSimulator physicsSimulator)
            : base(Vector2.Zero)
        {
            body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
           
        }



Et voici la méthode Update de l'objet :

  
    public void Update(GameTime gameTime)
    {
            Position = body.Position;
            Rotation = body.Rotation;

            if (ServiceHelper.Get().IsKeyDown(Keys.Left))
               body.Rotation -= 0.05f;

            if (ServiceHelper.Get().IsKeyDown(Keys.Right))
               body.Rotation += 0.05f;

            if (ServiceHelper.Get().IsKeyDown(Keys.Up))
               body.ApplyForce(new Vector2((float)Math.Sin(body.Rotation) * 100,
            (float)Math.Cos(body.Rotation) * -100));

            if (ServiceHelper.Get().IsKeyDown(Keys.Down))
               body.ApplyForce(new Vector2((float)Math.Sin(body.Rotation) * -100,
            (float)Math.Cos(body.Rotation) * 100));
}


L'objet reste fixe, il ne bouge pas, pourtant lorsque l'on appuie les touches sur gauche et droite, l'objet tourne bien, mais lorsqu'on appuie sur haut et bas, rien ne se passe.

J'ai vu quelque part qu'un problème similaire était dû à la propriété ".IsStatic" qui était par défaut à true, mais lorsque je fait "body.IsStatic = false;" dans le constructeur, ça ne change rien.

Merci d'avance pour votre aide


Pop70

1 réponse

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
9
Je viens de trouver le problème, il y avait une erreur dans le code, au lieu d'avoir
 physicsSimulator.Update(gameTime.ElapsedGameTime.Milliseconds * 0.001f);
il y avait
physicsSimulator.Update(gameTime.ElapsedGameTime.Seconds * 0.001f);


Sujet résolu
Pop70