К сожалению, вы правы, Box2D не имеет этой настройки.
Вместо этого вы можете прослушивать событие прослушивателя контактов, которое соответствует как игроку, так и мячу.Когда это происходит, вы прикладываете очень большую силу к мячу.
edit
Я набрал это на макушке головы, я не уверен, что это правильно.
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);
}
}
}
Что здесь происходит.
Вам необходимо создать экземпляр этого класса и зарегистрировать его в мире, который, вероятно, похож на world.SetContactListener(new MyContactListener)
или что-то в этом роде.
The Add () метод срабатывает, когда два тела вступают в контакт.Применяемая сила направлена в направлении нормали контакта (которая переносит вас из одного тела в другое).
Из-за того, как настроена система прослушивания контактов, это возможно как для мяча, так и для игрока.быть телом № 1 в структуре b2ContactPoint, поэтому вам нужно написать код для этой возможности.Направление нормали зависит от того, какое из них является телом № 1 (отсюда и знак минус).На самом деле я не могу вспомнить, как это происходит, поэтому вам может понадобиться обратить силу (поставить знак минус в другой ветви).
Кроме того, это должно быть достаточно ясно.Box2D, кажется, не так хорошо известен здесь, так что вам, возможно, повезет больше на форумах Box2D (http://www.box2d.org/forum/)