Développement XNA pour la XBox et le PC
222
5. La dernière chose à faire est d’ajouter une directive using.
using FarseerGames.FarseerPhysics;
Prise en main du moteur physique
Une nouvelle fois, ajoutez au projet les fichiers IKeyboardService.cs, KeyboardService.cs,
ServiceHelper.cs et Sprite.cs. Créez les classes Player et Asteroid qui dériveront de la
classe Sprite.
L’utilisation du moteur FarseerPhysics repose sur la classe PhysicsSimulator qui dispose
de deux constructeurs : le premier n’attend aucun paramètre, alors que le second attend
un objet de type Vector2. Cet objet correspond à la gravité à appliquer sur les axes X et Y.
Donc, si vous utilisez le constructeur sans arguments, il n’y aura pas de gravité !
Vous devrez appeler régulièrement la méthode Update() du simulateur pour que celui-ci
mette à jour tous les éléments qu’il gère. Cette méthode attend comme paramètre un intervalle de temps. Pour se rapprocher des calculs physiques habituels, passez-lui un temps
en secondes. Ce temps est récupérable en utilisant la propriété ElapsedGameTime.Milliseconds
que vous diviserez par mille (la propriété ElapsedGameTime.Seconds étant un entier, elle
serait imprécise).
Enfin, passez l’objet de type PhysicsSimulator au constructeur des classes Player et
Asteroid. Ci-dessous, vous retrouvez le code complet de la classe ChapitreDix_2.
Première classe de test du moteur physique
public class ChapitreDix_2 : Microsoft.Xna.Framework.Game
{
public static int SCREEN_WIDTH = 512;
public static int SCREEN_HEIGHT = 748;
static int NEW_ASTEROID_TIME = 5;
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
PhysicsSimulator physicsSimulator;
Player ship;
List asteroids = new List();
TimeSpan elapsedTimeSinceLastNewAsteroid = TimeSpan.Zero;
public ChapitreDix_2()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
ServiceHelper.Game = this;
Components.Add(new KeyboardService(this));
graphics.PreferredBackBufferHeight = SCREEN_HEIGHT;
graphics.PreferredBackBufferWidth = SCREEN_WIDTH;
}
=Labat FM.book Page 222 Vendredi, 19. juin 2009 4:01 16
Précédent

- 243/366

Suivant