我正在 xcode 中制作非常简单的应用程序。
我想,如果球进洞,比赛应该结束
所以我试着做。
if (ball . center == hole.center )
还有另一种方法,我失败了
我也试过这个
(ball.frame.origin.x == hole.frame.origin.x && ball.frame.origin.y == hole.frame.origin.y)
和往常一样失败了
请帮忙。
我只想要球的框架是否碰到洞 比赛结束
我正在 xcode 中制作非常简单的应用程序。
我想,如果球进洞,比赛应该结束
所以我试着做。
if (ball . center == hole.center )
还有另一种方法,我失败了
我也试过这个
(ball.frame.origin.x == hole.frame.origin.x && ball.frame.origin.y == hole.frame.origin.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
}
您可以使用CGRectIntersectsRect
(更多关于 CGGeometry)来查看球和洞是否相交:
if (CGRectIntersectsRect(ball.frame, hole.frame)) {
// Goal reached!
}
...或CGRectEqualToRect
以相同的方式(如果您想检查框架是否完全相同)。
我的猜测是你不想测试两个中心是否相等,而是它们是否足够接近。例如,在 x 和 y 方向上小于 epsilon。