Développement XNA pour la XBox et le PC
228
Pour activer les collisions, définissez la propriété CollisionResponseEnabled de la forme
géométrique à true. Vous pouvez indiquer le coefficient de réponse au choc (la force qui
sera appliquée au corps qui entre en collision) grâce à la propriété ResitutionCoefficient.
La portion de code ci-dessous présente le constructeur de la classe Asteroid qui crée
maintenant une forme géométrique et active les collisions.
public Asteroid(PhysicsSimulator physicsSimulator, ContentManager content)
: base(Vector2.Zero)
{
base.LoadContent(content, "asteroid2");
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
Origin = new Vector2(Texture.Width / 2, Texture.Height / 2);
GeomFactory.Instance.CreateRectangleGeom(physicsSimulator, body, 32,
➥32).CollisionResponseEnabled = true;
Initialize();
}
Vous pouvez relancer le jeu : à présent, les astéroïdes dérivent et entrent doucement en
collision.
Les collisions avec le joueur
Les choses vont être un peu plus complexes pour la classe Player. En effet, dès que le
vaisseau du joueur entrera en collision avec un autre élément, vous ne devrez pas le faire
rebondir, mais lui faire recommencer le jeu à zéro. Pour cela, la classe Geom met à votre
disposition l’événement OnCollision.
Un événement se produit quand quelque chose se passe dans un programme : le clic d’un
utilisateur sur un bouton, une collision entre deux entités, etc. Un événement doit être
traité avec une fonction particulière appelée event handler, qui doit avoir une signature
bien précise. Vous reliez l’événement à cette fonction en utilisant un délégué (vous les
avez déjà rencontrés lors de l’étude des méthodes asynchrones).
L’abonnement à l’événement se fait donc de la manière suivante :
public Player(PhysicsSimulator physicsSimulator)
: base(Vector2.Zero)
{
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
Tableau 10-2 Paramètres de la méthode CreateRectangleGeom
Paramètre
Description
PhysicsSimulator physicsSimulator
Ce paramètre est optionnel. Si vous l’utilisez, la forme géométrique
sera automatiquement ajoutée au simulateur physique.
Body body
Corps concerné.
Float width
Largeur de la forme.
Float height
Hauteur de la forme.
=Labat FM.book Page 228 Vendredi, 19. juin 2009 4:01 16
228
Pour activer les collisions, définissez la propriété CollisionResponseEnabled de la forme
géométrique à true. Vous pouvez indiquer le coefficient de réponse au choc (la force qui
sera appliquée au corps qui entre en collision) grâce à la propriété ResitutionCoefficient.
La portion de code ci-dessous présente le constructeur de la classe Asteroid qui crée
maintenant une forme géométrique et active les collisions.
public Asteroid(PhysicsSimulator physicsSimulator, ContentManager content)
: base(Vector2.Zero)
{
base.LoadContent(content, "asteroid2");
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
Origin = new Vector2(Texture.Width / 2, Texture.Height / 2);
GeomFactory.Instance.CreateRectangleGeom(physicsSimulator, body, 32,
➥32).CollisionResponseEnabled = true;
Initialize();
}
Vous pouvez relancer le jeu : à présent, les astéroïdes dérivent et entrent doucement en
collision.
Les collisions avec le joueur
Les choses vont être un peu plus complexes pour la classe Player. En effet, dès que le
vaisseau du joueur entrera en collision avec un autre élément, vous ne devrez pas le faire
rebondir, mais lui faire recommencer le jeu à zéro. Pour cela, la classe Geom met à votre
disposition l’événement OnCollision.
Un événement se produit quand quelque chose se passe dans un programme : le clic d’un
utilisateur sur un bouton, une collision entre deux entités, etc. Un événement doit être
traité avec une fonction particulière appelée event handler, qui doit avoir une signature
bien précise. Vous reliez l’événement à cette fonction en utilisant un délégué (vous les
avez déjà rencontrés lors de l’étude des méthodes asynchrones).
L’abonnement à l’événement se fait donc de la manière suivante :
public Player(PhysicsSimulator physicsSimulator)
: base(Vector2.Zero)
{
body = BodyFactory.Instance.CreateRectangleBody(physicsSimulator, 32, 32, 1);
Tableau 10-2 Paramètres de la méthode CreateRectangleGeom
Paramètre
Description
PhysicsSimulator physicsSimulator
Ce paramètre est optionnel. Si vous l’utilisez, la forme géométrique
sera automatiquement ajoutée au simulateur physique.
Body body
Corps concerné.
Float width
Largeur de la forme.
Float height
Hauteur de la forme.
=Labat FM.book Page 228 Vendredi, 19. juin 2009 4:01 16
