#ios #iphone #objective-c #cocos2d-iphone #ccsprite
#iOS #iPhone #objective-c #cocos2d-iphone #ccsprite
Вопрос:
Я хотел бы отключить спрайт, как только он будет задействован для игры для iOS, которую я создаю с cocos2d. В настоящее время появляется спрайт, и он объявляется следующим образом:
@implementation GameScene
{
CCSprite *_shapeSprite;
}
и затем у меня один появляется каждые 0,2 секунды в addShape:
методе
- (void)onEnter
{
[super onEnter];
[self schedule:@selector(addShape:) interval:0.2];
}
Тем не менее, я хотел бы сделать так, чтобы при нажатии на одну из фигур исчезала только та, которая была прослушана. Пока у меня есть это:
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
_shapeSprite.opacity = 0;
}
Однако это просто удаляет последнюю созданную фигуру, а не ту, которая задействована — может кто-нибудь, пожалуйста, указать мне правильное направление здесь, пожалуйста?
Комментарии:
1. сохраняйте все спрайты в массиве, при касании экрана затем сравнивайте, находится ли положение касания внутри поля привязки любого спрайта. Если да, то этот спрайт коснулся и делайте все, что хотите.
Ответ №1:
Попробуйте с этим, убедитесь, что у вас есть self.userInteractionEnabled = YES; в init
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLoc = [touch locationInNode:self];
// detect Sprite
for (CCSprite *mySprite in self.children) {
float distance = pow(mySprite.position.x - touchLoc.x, 2) pow(mySprite.position.y - touchLoc.y, 2);
distance = sqrt(distance);
if (distance <= 60) { //60 is radius from sprite center, change it
// do something with this sprite
mySprite.opacity = 0;
}
}
}
Комментарии:
1. Похоже, это не помогает, спрайты по-прежнему не становятся непрозрачными. Кроме того, Xcode выдает предупреждение о том, как элемент управления достигает конца функции, не являющейся недействительной?
2. Какую версию cocos2d вы используете, v2 или v3?