Я хочу иметь возможность сказать, если какой-либо из спрайтов находится в этой точной координате, затем переместить их в точку
Во-первых, укажите «горячую точку» программно:
CGPoint hotspot = ccp(32,32); // convenience macro,
//creates a CGPoint with x = 32, y = 32
Вы должны хранить ссылку на все ваши спрайты в массиве при их создании (вы также можете использовать 'маркировку' в cocos2d, но я обычно люблю использовать массив для простоты)
-(void)init {
//.. misc
// creating sprite returns a reference so keep it in an array
CCSprite* curSprite = [CCSprite spriteWithFile: //...etc]
[self.spriteArray addObject: curSprite];
// add all sprite references to your array
}
Теперь вы можете выполнить итерацию по этому массиву, чтобы посмотреть, не перекрывают ли какие-либо фреймы спрайта горячую точку:
-(BOOL) checkAllSpritesForCollision
{
for (CCSprite *sp in self.spriteArray)
{
CGRect spriteRect = sp.frame;
if (CGRectContainsPoint(spriteRect,hotspot))
{
// run your action on sp...
}
}
// you might like to return YES if a collision happened?
}
Это метод грубой силы, проверяющий, содержит ли каждый фрейм спрайтов заданную точку. Конечно, есть много способов снять шкуру с этой кошки, но, надеюсь, это поможет вам выбрать лучший путь.