High velocity "pass throughs" are a common issue. As Cocos stated, set the usesPreciseCollisionDetection
to true for your player object.
You should also apply a speed cap to faster moving objects as usesPreciseCollisionDetection
is not guaranteed to work on very fast moving objects.
You can apply a speed cap like this:
if(mySpriteA.physicsBody.velocity.dx > 50)
mySpriteA.physicsBody.velocity = CGVectorMake(50, mySpriteA.physicsBody.velocity.dy);
if(mySpriteA.physicsBody.velocity.dx < -50)
mySpriteA.physicsBody.velocity = CGVectorMake(-50, mySpriteA.physicsBody.velocity.dy);
if(mySpriteA.physicsBody.velocity.dy > 50)
mySpriteA.physicsBody.velocity = CGVectorMake(mySpriteA.physicsBody.velocity.dx, 50);
if(mySpriteA.physicsBody.velocity.dy < -50)
mySpriteA.physicsBody.velocity = CGVectorMake(mySpriteA.physicsBody.velocity.dx, -50);