如果使用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
类型,情况并非总是如此,即使像素似乎是对齐的。 您在动画或游戏模拟代码中计算它们的方式可能会导致微小的错误。
您可以尝试在比较它们之前对值进行舍入或允许小偏差。