Iphone 球与平台碰撞

Iphone 球与平台碰撞,iphone,ios,cocoa-touch,core-graphics,collision-detection,Iphone,Ios,Cocoa Touch,Core Graphics,Collision Detection,我正在开发一个游戏,我需要检测两个物体(平台和球)之间的碰撞: platform = [[UIImageView alloc]initWithFrame:CGRectMake(150, 300, 60, 15)]; [platform setImage:[UIImage imageNamed:@"barrinha.png"]]; [platform setCenter:CGPointMake(150, 330)]; [platform setUserInteractionEnabled:YES]

我正在开发一个游戏,我需要检测两个物体(平台和球)之间的碰撞:

platform = [[UIImageView alloc]initWithFrame:CGRectMake(150, 300, 60, 15)];
[platform setImage:[UIImage imageNamed:@"barrinha.png"]];
[platform setCenter:CGPointMake(150, 330)];
[platform setUserInteractionEnabled:YES];
[pit addSubview:platform];

ball = [[UIImageView alloc]initWithFrame:CGRectMake(150, 300, 15, 15)];
[ball setImage:[UIImage imageNamed:@"ball.png"]];
[pit addSubview:ball];
我在这里使用此代码来检测它:

//EDIT FROM HERE
if (CGRectIntersectsRect(ball.frame, platform.frame)){
    pos.y = -pos.y;
}
//TO HERE
问题是,它检测到平台顶部和底部的碰撞,但在平台的侧面。当发生侧面碰撞时,球会进入平台,并在平台内部不断晃动,直到球飞出

评论编辑:所以你可以看到,我只是让它改变它的方向。所以,不,我需要一些帮助来找到更好的方法来处理侧面碰撞

我已经尝试过使用它,但它确实适用于具有相同宽度和高度的对象。 所以我现在想知道你们是否有任何想法来帮助我解决这个问题


祝你们长寿,兴旺发达,伙计们。

我用两个CGRECT做了同样的尝试,效果很好。也许其中一个框架有问题?理论上,您可以始终使用CGRectIntersectionball,platform,并检查生成的rect的宽度和高度是否大于0

以防万一,你可以在检查交叉口之前打印出实际的矩形,这样你可以得到更多的细节


编辑:您需要同时考虑y轴和x轴,因此不要只翻转其中一个pos,而是同时翻转它们。

事实上,我看得更清楚,问题不在于检测,而在于检测后我做了什么。看看上面的编辑:您需要进一步描述问题,碰撞后您希望发生什么?球要反弹吗?在这种情况下,您需要找出球的方向,并使用它,而不是简单地反转y轴位置。例如,如果它以某个角度击中,你需要找到新的角度并相应地调整位置。啊,对不起。好啊我不需要它进入平台,我需要它朝相反的方向反弹。