如果使用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; } 

…所以坐标必须绝对等于返回true。

对于CGFloat类型,情况并非总是如此,即使像素似乎是对齐的。 您在动画或游戏模拟代码中计算它们的方式可能会导致微小的错误。

您可以尝试在比较它们之前对值进行舍入或允许小偏差。