Développement XNA pour la XBox et le PC
224
À présent, vous devez adapter la classe Player du début de ce chapitre à l’utilisation du
moteur physique. Celui-ci ne traitera pas directement une texture ni un sprite, il travaillera
avec des objets de type Body (des corps). Vous devez donc créer un corps pour chaque
élément qui devra être traité par FarseerPhysics. La classe Body se situe dans l’espace de
noms FarseerGames.FarseerPhysics.Dynamics.
La création d’un corps se fait en utilisant la classe BodyFactory (espace de noms FarseerGames
.FarseerPhysics.Factories). La méthode à utiliser dépend de la forme que vous désirez
donner à votre corps. Dans le cas du vaisseau du joueur, utilisez une forme carrée grâce à
la méthode CreateRectangleBody().
Un corps possède ses propres propriétés position et rotation. Le sprite est la représentation
graphique du vaisseau et le corps, sa représentation physique. Pour ne pas avoir de décalage
entre les deux, vous mettez à jour la position et l’angle de rotation du sprite en fonction
des propriétés du corps.
En ce qui concerne la rotation du corps, le point d’origine est pris au milieu du corps,
pensez donc à faire de même en ce qui concerne le sprite.
Vous pouvez appliquer une force sur un corps simplement grâce à la méthode ApplyForce
(). Elle attend comme paramètre un objet Vector2 qui contient les valeurs à appliquer sur
les axes X et Y. Pour appliquer une force sur le vaisseau et que celui-ci se dirige dans la
bonne direction, utilisez les fonctions mathématiques Sin() et Cos() à partir de son angle
de rotation en radian (rappelez-vous du cercle trigonométrique !).
Les quatre derniers tests de la méthode Update() permettent au vaisseau de disparaître
d’un côté de l’écran pour réapparaître de l’autre.
Le vaisseau du joueur utilisant le moteur physique
class Player : Sprite
{
Body body;
public Player(PhysicsSimulator physicsSimulator)
: base(Vector2.Zero)
{
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
}
Tableau 10-1 Paramètres de la méthode CreateRectangleBody
Paramètre
Description
PhysicsSimulator physicsSimulator
Ce paramètre est optionnel. Si vous l’utilisez, le corps sera
automatiquement ajouté au simulateur physique.
Float width
Largeur du corps.
Float height
Hauteur du corps.
Float mass
Masse du corps.
=Labat FM.book Page 224 Vendredi, 19. juin 2009 4:01 16
224
À présent, vous devez adapter la classe Player du début de ce chapitre à l’utilisation du
moteur physique. Celui-ci ne traitera pas directement une texture ni un sprite, il travaillera
avec des objets de type Body (des corps). Vous devez donc créer un corps pour chaque
élément qui devra être traité par FarseerPhysics. La classe Body se situe dans l’espace de
noms FarseerGames.FarseerPhysics.Dynamics.
La création d’un corps se fait en utilisant la classe BodyFactory (espace de noms FarseerGames
.FarseerPhysics.Factories). La méthode à utiliser dépend de la forme que vous désirez
donner à votre corps. Dans le cas du vaisseau du joueur, utilisez une forme carrée grâce à
la méthode CreateRectangleBody().
Un corps possède ses propres propriétés position et rotation. Le sprite est la représentation
graphique du vaisseau et le corps, sa représentation physique. Pour ne pas avoir de décalage
entre les deux, vous mettez à jour la position et l’angle de rotation du sprite en fonction
des propriétés du corps.
En ce qui concerne la rotation du corps, le point d’origine est pris au milieu du corps,
pensez donc à faire de même en ce qui concerne le sprite.
Vous pouvez appliquer une force sur un corps simplement grâce à la méthode ApplyForce
(). Elle attend comme paramètre un objet Vector2 qui contient les valeurs à appliquer sur
les axes X et Y. Pour appliquer une force sur le vaisseau et que celui-ci se dirige dans la
bonne direction, utilisez les fonctions mathématiques Sin() et Cos() à partir de son angle
de rotation en radian (rappelez-vous du cercle trigonométrique !).
Les quatre derniers tests de la méthode Update() permettent au vaisseau de disparaître
d’un côté de l’écran pour réapparaître de l’autre.
Le vaisseau du joueur utilisant le moteur physique
class Player : Sprite
{
Body body;
public Player(PhysicsSimulator physicsSimulator)
: base(Vector2.Zero)
{
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
}
Tableau 10-1 Paramètres de la méthode CreateRectangleBody
Paramètre
Description
PhysicsSimulator physicsSimulator
Ce paramètre est optionnel. Si vous l’utilisez, le corps sera
automatiquement ajouté au simulateur physique.
Float width
Largeur du corps.
Float height
Hauteur du corps.
Float mass
Masse du corps.
=Labat FM.book Page 224 Vendredi, 19. juin 2009 4:01 16
