Ios 如果使用CGPointEqualToPoint,则不起作用
我试图弄明白为什么这个函数不执行GameEnd函数,当球的位置和拦网的位置完全相同,当主播点相同时Ios 如果使用CGPointEqualToPoint,则不起作用,ios,objective-c,cgpoint,Ios,Objective C,Cgpoint,我试图弄明白为什么这个函数不执行GameEnd函数,当球的位置和拦网的位置完全相同,当主播点相同时 if (CGPointEqualToPoint(ball.position,block.position)) { if (CGPointEqualToPoint(ball.anchorPoint,monster1.anchorPoint)) { [self theGameEnd]; } } CGPointEqualToPoint的
if (CGPointEqualToPoint(ball.position,block.position)) {
if (CGPointEqualToPoint(ball.anchorPoint,monster1.anchorPoint)) {
[self theGameEnd];
}
}
CGPointEqualToPoint
的实现是
CG_INLINE bool __CGPointEqualToPoint(CGPoint point1, CGPoint point2)
{
return point1.x == point2.x && point1.y == point2.y;
}
。。。所以坐标必须绝对相等才能返回真值
CGFloat
类型并不总是如此,即使像素似乎是对齐的。在动画或游戏模拟代码中计算它们的方式可能会导致微小错误
在比较之前,您可以尝试对这些值进行四舍五入,或者允许一点偏差。您能告诉我您的要求吗