我正在开发一款游戏,我需要检测两个物体(平台和球)之间的碰撞:
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,但它确实适用于具有相同宽度和高度的对象。 所以我现在想,如果你们有任何想法可以帮助我解决这个问题。
活得长久,充满活力,伙计。
答案 0 :(得分:0)
我尝试了两个CGRects,它运行得很好。也许其中一个框架存在问题?理论上你总是可以使用CGRectIntersection(ball, platform)
代替并检查结果矩形的宽度和高度是否> 0
以防万一,您是否可以在检查交叉路口之前打印出实际的信息,这样您就可以获得更多细节。
编辑:你需要同时考虑y和x轴,所以不要只翻转其中一个pos,而是将它们翻转。