Je travaille sur un jeu dans OBJ C qui a une vue de balle et une vue de scène. La vue de la scène a 4 sous-vues. Toutes les vues sont UIImageViews. J'ai une méthode de détection de collision qui fonctionne. Je voudrais l'étendre à plus de 4 sous-vues sans créer simplement plus de lignes de code. En regardant le code ci-dessous, est-il un moyen de simplifier cela en boucles à la place. Merci!Détection de collision à l'aide de sous-vues multiples dans une vue en mouvement
// 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
}
}
Les carrés sont dans une vue d'image maître, donc je peux déplacer cette vue autour de laquelle toutes les vues qu'elle contient sont déplacées. En fait, j'ai commencé comme vous l'aviez suggéré, mais j'ai pensé que cela pourrait être plus lent à traiter. Il y avait moins de code pour la détection, bien qu'à l'époque je n'avais pas implémenté de boucles, donc le code semblait plus long. Finalement, je voudrais passer à GL, mais uiimageviews fonctionne bien pour ce projet. Merci pour le conseil! – Damonmath
De rien. Si vous utilisez Open GL, je recommande une bibliothèque telle que Cocos2D ou, si 3D, SIO2. – makdad