Problème avec FarseerPhysics

Résolu
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 - 22 févr. 2011 à 11:37
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 - 22 févr. 2011 à 12:30
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

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
22 févr. 2011 à 12:30
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
3
Rejoignez-nous