pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 2012
-
22 févr. 2011 à 11:37
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDerniè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.