球与平台之间的碰撞

时间:2011-12-09 12:21:21

标签: 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];
[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

问题在于它检测到平台顶部和底部的碰撞,但是在它的两侧。当有一个侧面碰撞时,球会进入平台,并一直在里面摇晃直到它出来。

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

我已经尝试使用Joe Blow's code,但它确实适用于具有相同宽度和高度的对象。 所以我现在想,如果你们有任何想法可以帮助我解决这个问题。

活得长久,充满活力,伙计。

1 个答案:

答案 0 :(得分:0)

我尝试了两个CGRects,它运行得很好。也许其中一个框架存在问题?理论上你总是可以使用CGRectIntersection(ball, platform)代替并检查结果矩形的宽度和高度是否> 0

以防万一,您是否可以在检查交叉路口之前打印出实际的信息,这样您就可以获得更多细节。

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