Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如果球到了洞,如何进行测试?_Objective C_Ios - Fatal编程技术网

Objective c 如果球到了洞,如何进行测试?

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) 像往常一样失败了 请帮忙 我只是想,如果球的边沿碰到洞,比赛就结束了,我猜你不想测试两个中

我正在用xcode制作非常简单的应用程序

我想说的是,如果球到了洞里,比赛就应该结束了

所以我试着去做

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
同样的方法(如果您想检查帧是否完全相同)。

当您有矩形框而不是圆形框时,这很有用,不幸的是,这会使球在难以置信的情况下与孔相交(例如考虑两个角的相交)