볼보기와 무대보기가있는 OBJ C의 게임을 작업 중입니다. 무대보기에는 4 개의 하위보기가 있습니다. 모든 뷰는 UIImageViews입니다. 충돌 감지가 작동하는 방법이 있습니다. 단순히 코드 줄을 더 만들지 않고 4 개 이상의 하위보기로 확장하고 싶습니다. 아래의 코드를 살펴보면 루프를 단순화하는 방법이 있습니다. 감사!움직이는보기 내에서 여러 개의 하위보기를 사용하여 충돌 감지
// convert each square to be relevant to ball's superview in order to collision detect
CGRect square_01Frame = [ball.superview convertRect:square_01.frame fromView:square_01.superview];
CGRect square_02Frame = [ball.superview convertRect:square_02.frame fromView:square_02.superview];
CGRect square_03Frame = [ball.superview convertRect:square_03.frame fromView:square_03.superview];
CGRect square_04Frame = [ball.superview convertRect:square_04.frame fromView:square_04.superview];
// convert CGRects to NSStrings for storage in square_frames array
NSString *square_01FrameString = NSStringFromCGRect(square_01Frame);
NSString *square_02FrameString = NSStringFromCGRect(square_02Frame);
NSString *square_03FrameString = NSStringFromCGRect(square_03Frame);
NSString *square_04FrameString = NSStringFromCGRect(square_04Frame);
// load array of NSStrings
[square_frames replaceObjectAtIndex:0 withObject:square_01FrameString];
[square_frames replaceObjectAtIndex:1 withObject:square_02FrameString];
[square_frames replaceObjectAtIndex:2 withObject:square_03FrameString];
[square_frames replaceObjectAtIndex:3 withObject:square_04FrameString];
// create a for loop
for (int i=0; i<4; i++) { // 4 squares
// create test frame
CGRect test_frame = CGRectFromString([square_frames objectAtIndex:i]);
if (CGRectIntersectsRect(test_frame,ball.frame)) { // collision detection
// do something
}
}
스퀘어는 마스터 uiimageview 내에 있으므로이 뷰를 둘러싼 다음 뷰를 이동하여 해당 뷰에 포함 된 모든 뷰를 이동할 수 있습니다. 실제로 제안한 방식대로 시작했지만 처리하는 것이 더 느릴 수도 있다고 생각했습니다. 당시에는 루프를 구현하지 않았지만 코드가 더 길어 보였지만 탐지를위한 코드가 적었습니다. 결국 오픈 GL로 이동하고 싶지만 uiimageviews는이 프로젝트에서 잘 작동합니다. 조언 해주셔서 감사합니다! – Damonmath
당신을 진심으로 환영합니다. OpenGL을 사용하는 경우 Cocos2D 또는 3D, SIO2와 같은 라이브러리를 사용하는 것이 좋습니다. – makdad