Итак, я делаю простую игру с персонажем, который может стрелять, и стрельба работает, за исключением того, что когда персонаж поворачивает направление движения маркера. Я понимаю, почему это происходит, так что мой вопрос будет, есть ли способ удалить пулю из массива, сохраняя текущую скорость, чтобы он игнорировал направление персонажа?Пули меняют направление с помощью символа
-(void)spinTapped
{
CCSprite *bullet = [CCSprite spriteWithFile:@"rwby_bullet.png"];
bullet.position = ccp(self.character.position.x , self.character.position.y+25);
[bullets addObject:bullet];
[self addChild:bullet z:-1];
}
затем в обновлении:
if(isRight) bulletVelocity = 10;
else if(isLeft) bulletVelocity = -10;
for(CCSprite *bullet in bullets)
{
bullet.position = ccp(bullet.position.x + bulletVelocity + scrollVelocity, bullet.position.y);
}
Спасибо так много! Это прекрасно работает! Любые советы о том, как удалить объекты из массива? Другими словами, сбор мусора? Прямо сейчас я использую [bullets removeObject: bullet]; это правильный путь? Потому что на данный момент этот способ приводит к сбою приложения при его удалении, а другой - на экране. – user1569940
У вас могут возникнуть проблемы с потоками, или, если вы действительно запутались, вы удаляете объекты из массива при его повторении. Я бы рекомендовал вам создать второй массив пуль, которые необходимо удалить. Затем удалите их в безопасном месте. – HalR