화면의 맨 위에서 아래로 움직이는 애니메이션과 같은 "비"가 있습니다 (여러 이미지가 연속적으로 맨 위에서 떨어짐). 나는 또한 아래쪽에 손가락으로 제어되는 바구니 이미지를 가지고있다. 나는 앱이 떨어지는 이미지와 바스켓 사이의 "충돌"의 양을 계산하고 그들이 충돌하면 이미지를 제거하기를 원합니다.CGRectIntersectsRect 콜리 전 카운트가 너무 많습니다.
저는 두 개의 타이머를 사용합니다 : 하나는 연속적으로 위에서 이미지를 떨어 뜨립니다. 각 이미지를 배열에 넣었습니다. 그런 다음 0.001마다 충돌을 확인하는 또 다른 타이머가 있습니다.
두 개체가 충돌 할 때마다 계산을 할 수 있었지만 문제가 너무 많습니다. 예를 들어, 각 시각적 충돌은 985 충돌과 같은 것을 계산합니다. 내가 내 코드에서 잘못하고있는 중이 야? 타이머 :
[NSTimer scheduledTimerWithTimeInterval:(0.001) target:self selector:@selector(onCollisionCheckTimer) userInfo:nil repeats:YES];
충돌 검사기 :
- (void)onCollisionCheckTimer{
for (x = 0; x<100; x++){
CALayer *layer = appleView[x].layer.presentationLayer;
if(CGRectIntersectsRect(basketView.frame, layer.frame)) {
collision++;
printf("%i\n", collision);
[appleView[x] removeFromSuperview];
}
}
}
는 printf("%i", collision);
모든 충돌 모든
또는 사과 모양이 바구니에 도착하면 appleView 배열에서 각 사과보기를 제거하십시오. 또한'NSTimer' 대신'CADisplayLink'를 사용하십시오. 'CADisplayLink'는 코어 애니메이션 업데이트를 구동하는 디스플레이 리프레시 타이머와 동기화됩니다. –
도움과 정보를 모두 제공해 주셔서 감사합니다. – user1861051
superview 속성 검사는 어떻게합니까? – user1861051