Спасибо за отклик!
Проблему решил, используя первую рекомендацию по указанной мной же ссылке

Когда открывал тему - был не в адеквате, поэтому не вник.
На всякий случай оставлю решение, которое мне подошло. В precollisionlistener:

Код AS3:
if (obj1 is DestructableActor)
{
var impactImpulse:Vec2 = obj2.body.velocity.add(callback.arbiter.collisionArbiter.contacts.at(0).position.sub(obj2.body.position).perp().mul(obj2.body.angularVel)).mul(obj2.body.mass);
var impactResult:Number = (obj1 as DestructableActor).strike(impactImpulse) / obj2.body.mass;
if (impactResult > 0)
{
var xdy:Number = obj2.body.velocity.y / obj2.body.velocity.x;
var otdachaX:Number = Math.sqrt(impactResult * impactResult / (1 + xdy * xdy));
var otdacha:Vec2 = Vec2.get( -otdachaX * obj2.body.velocity.x / Math.abs(obj2.body.velocity.x), - otdachaX * xdy * obj2.body.velocity.y / Math.abs(obj2.body.velocity.y));
obj2.body.applyImpulse(otdacha, callback.arbiter.collisionArbiter.contacts.at(0).position);
return PreFlag.IGNORE;
}
}
if (obj2 is DestructableActor)
{
var impactImpulse2:Vec2 = obj2.body.velocity.add(callback.arbiter.collisionArbiter.contacts.at(0).position.sub(obj2.body.position).perp().mul(obj2.body.angularVel)).mul(obj2.body.mass);
var impactResult2:Number = (obj2 as DestructableActor).strike(impactImpulse2) / obj1.body.mass;
if (impactResult2 > 0)
{
var xdy2:Number = obj1.body.velocity.y / obj1.body.velocity.x;
var otdachaX2:Number = Math.sqrt(impactResult2 * impactResult2 / (1 + xdy2 * xdy2));
var otdacha2:Vec2 = Vec2.get( -otdachaX2 * obj1.body.velocity.x / Math.abs(obj1.body.velocity.x), - otdachaX2 * xdy2 * obj1.body.velocity.y / Math.abs(obj1.body.velocity.y));
obj1.body.applyImpulse(otdacha2, callback.arbiter.collisionArbiter.contacts.at(0).position);
return PreFlag.IGNORE;
}
}