有一个球UIImage和Paddle UIImage。
当球击中顶部和底部时碰撞工作正常,但是如果碰到桨的小侧面,则球穿过它并在桨内反弹并出来。
if (CGRectIntersectsRect(ball.frame, racquet_green.frame))
{
ballVelocity.y = -ballVelocity.y;
}
请告诉我一些建议或任何其他碰撞检查方法。这是简单的球拍问题
注意:当球以45度撞击矩形桨时,会发生这种情况。
答案 0 :(得分:0)
它可能就是这样,因为: 当球从侧面飞过时,碰撞前的一个模拟步骤位于桨的顶部,但是id不会碰撞,因为它的X坐标太小(或太大)。
然后发生下一个模拟步骤,并且球与桨碰撞,因此其y速度反转,但x速度仍然相同,因此球进一步进入桨状。
然后下一个模拟步骤发生,并且球仍在桨内,因此其y速度反转,但x速度不变,因此它进一步进入桨状,但沿途一直上下跳动。
解决方案 - 检查桨叶的垂直和水平边缘是否发生碰撞。