2014-01-29 3 views
3

공 위치가 블록 위치와 정확히 같고 앵커 포인트가 동일한 경우이 함수가 GameEnd 함수를 실행하지 않는 이유를 알아 내려고합니다. 좌표 true를 반환 절대적 동일해야하므로CGPointEqualToPoint와 함께 작동하지 않는 경우

if (CGPointEqualToPoint(ball.position,block.position)) { 
     if (CGPointEqualToPoint(ball.anchorPoint,monster1.anchorPoint)) { 
      [self theGameEnd]; 
     } 
    } 
+0

요구 사항을 알려주시겠습니까 –

+0

위치 시도보기 –

+0

디버깅을하셨습니까? – Wain

답변

2

CGPointEqualToPoint의 구현 ...

CG_INLINE bool __CGPointEqualToPoint(CGPoint point1, CGPoint point2) 
{ 
    return point1.x == point2.x && point1.y == point2.y; 
} 

이다.

픽셀이 정렬 된 것으로 보이는 경우에도 항상 CGFloat 유형의 경우는 아닙니다. 애니메이션 또는 게임 시뮬레이션 코드에서 계산하는 방식으로 인해 약간의 오류가 발생할 수 있습니다.

값을 비교하기 전에 값을 반올림하거나 작은 편차를 허용 할 수 있습니다.