Malheureusement, vous avez raison, Box2D n'a pas ce paramètre.
Ce que vous pouvez faire à la place est d'écouter un événement d'auditeur de contact qui correspond à la fois au joueur et à la balle. Quand cela arrive, vous appliquez une très grande force à la balle.
modifier
Je dactylographiées ce du haut de ma tête, je ne suis pas sûr qu'il est tout à fait exact.
public class MyContactListener extends b2ContactListener {
override public function Add(point:b2ContactPoint):void {
var ball:b2Body = ...
var player:b2Body = ... // fill these
var force:b2Vec2;
if(point.shape1.GetBody() == ball && point.shape2.GetBody() == player) {
force = point.normal.Copy();
force.Multiply(SOMETHING);
ball.ApplyForce(force);
} else if(point.shape1.GetBody() == player && point.shape2.GetBody() == ball) {
force = point.normal.Copy();
force.Multiply(-SOMETHING);
ball.ApplyForce(force);
}
}
}
Que se passe-t-il ici?
Vous devez créer une instance de cette classe et l'enregistrer avec le monde qui est probablement quelque chose comme world.SetContactListener(new MyContactListener)
ou quelque chose.
La méthode Add() se déclenche lorsque deux corps entrent en contact. La force appliquée est dans le sens de la normale de contact (qui vous emmène d'un corps à l'autre). En raison de la manière dont le système d'écouteurs de contacts est configuré, il est possible que la balle ou le lecteur soit le corps n ° 1 dans la structure b2ContactPoint, vous devez donc coder pour cette possibilité. La direction de la normale dépend de laquelle est le corps n ° 1 (d'où le signe moins). Je ne peux pas me souvenir exactement de quelle façon cela se passe, alors vous devrez peut-être inverser la force (mettez le signe moins dans l'autre branche).
À part cela, il devrait être raisonnablement clair. Box2D ne semble pas si bien connu ici, donc vous pourriez avoir un peu plus de chance sur les forums Box2D (http://www.box2d.org/forum/)
une ligne de code par exemple sera vraiment utile :) –
@Oleg, est-ce utile? –
Oui, merci beaucoup! –