Objective c 如果球到了洞,如何进行测试?
我正在用xcode制作非常简单的应用程序 我想说的是,如果球到了洞里,比赛就应该结束了 所以我试着去做Objective c 如果球到了洞,如何进行测试?,objective-c,ios,Objective C,Ios,我正在用xcode制作非常简单的应用程序 我想说的是,如果球到了洞里,比赛就应该结束了 所以我试着去做 if (ball . center == hole.center ) 另一方面,我失败了 我也试过这个 (ball.frame.origin.x == hole.frame.origin.x && ball.frame.origin.y == hole.frame.origin.y) 像往常一样失败了 请帮忙 我只是想,如果球的边沿碰到洞,比赛就结束了,我猜你不想测试两个中
if (ball . center == hole.center )
另一方面,我失败了
我也试过这个
(ball.frame.origin.x == hole.frame.origin.x && ball.frame.origin.y == hole.frame.origin.y)
像往常一样失败了
请帮忙
我只是想,如果球的边沿碰到洞,比赛就结束了,我猜你不想测试两个中心是否相等,而是他们是否足够接近。例如,在x和y方向上的距离小于ε。问题是,你不应该检查位置是否完全相同,这不是它如何处理浮点坐标(我猜你正在使用)和游戏中物体的移动精度,因为游戏中不需要物体在同一个同一位置 您应该检查距离是否小于阈值:
float bx = ball.frame.origin.x;
float by = ball.frame.origin.y;
float hx = hole.frame.origin.x;
float hy = hole.frame.origin.y;
// you don't actually need abs since you are going to raise to the power of 2
// but for sake of soundness it makes sense
float dx = abs(bx-hx);
float dy = abs(by-hy);
if (sqrt(dx*dx + dy*dy) < THRESHOLD) {
// the ball is enough near to center
}
float bx=ball.frame.origin.x;
float by=ball.frame.origin.y;
float hx=孔.frame.origin.x;
float hy=hole.frame.origin.y;
//你实际上不需要腹肌,因为你要提升到2的力量
//但为了稳妥起见,这是有道理的
浮动dx=绝对值(bx hx);
浮动dy=abs(按hy);
如果(sqrt(dx*dx+dy*dy)<阈值){
//球离中心足够近了
}
您可以使用CGRectIntersectsRect
()查看球和球洞是否相交:
if (CGRectIntersectsRect(ball.frame, hole.frame)) {
// Goal reached!
}
。。。或者
CGRectEqualToRect
同样的方法(如果您想检查帧是否完全相同)。当您有矩形框而不是圆形框时,这很有用,不幸的是,这会使球在难以置信的情况下与孔相交(例如考虑两个角的相交)