我正在创建一个 Cocos2D 应用程序,该应用程序将具有 4 - 12 个用户可以与之交互/移动的精灵(图片中的精灵 1 - 4)。将有相同数量的目标精灵,用户将能够将其他精灵拖到(图中的目标 1 - 4)。我正在考虑为所有精灵添加标签以区分它们。我遇到的困难是确定跟踪可移动精灵的正确方法,这些可移动精灵与每个精灵都位于哪些目标精灵之上。
我应该如何跟踪这些关系?
- 精灵 1 - 目标 3
- 精灵 2 - 目标 1
- 精灵 3 - 目标 2
- 精灵 4 - 目标 4
我正在创建一个 Cocos2D 应用程序,该应用程序将具有 4 - 12 个用户可以与之交互/移动的精灵(图片中的精灵 1 - 4)。将有相同数量的目标精灵,用户将能够将其他精灵拖到(图中的目标 1 - 4)。我正在考虑为所有精灵添加标签以区分它们。我遇到的困难是确定跟踪可移动精灵的正确方法,这些可移动精灵与每个精灵都位于哪些目标精灵之上。
我应该如何跟踪这些关系?
创建两个不同的可变数组来保存你的对象和一个数组来保存你的正确答案,即
//In your .h
NSMutableArray *_targets;
NSMutableArray *_moveableSprites;
NSArray *_answers;
//In your .m
_targets = [[NSMutableArray alloc] init];
_moveableSprites = [[NSMutableArray alloc] init];
_answers = [[NSArray alloc] initWithObjects:@"101", @"103", @"102", @"104", nil];
当你创建你的精灵时,为它们分配一个标签值,即
CCSprite *target1 = [CCSprite spriteWithFile:@"file.png"];
//Make sure target tags start from 0 and increment up
target1.tag = 0;
然后在将每个精灵添加到图层之前,将它们添加到各自的数组中,即
[_targets addObject:target1];
然后,您可以编写一个方法来检查精灵位置(类似于此):
- (void)checkSprites {
for(CCSprite *sprite in _moveableSprites) {
for(CCSprite *target in _targets) {
if(CGRectIntersectsRect(sprite.boundingBox, target.boundingBox)) {
if(sprite.tag == [_answers objectAtIndex:target.tag]) {
// Correct sprite in target.....do stuff
} else {
// Not correct sprite.....do stuff
}
}
}
}
}