Я знаю, что это было задано много раньше, но я не могу найти решение. У меня есть CCSprite
на экране, плеер, который управляется акселерометром. Затем поверх экрана другие CCSprites
разворачиваются каждые 2 секунды, враги. Я хочу, чтобы все враги следовали за игроком, если игрок перемещает игрока, враги должны менять направление и идти к этому CCSprite
. Это мой код далеко:Сделать CCSprite двигаться в направлении другого CCSprite
- (void)spawnEnemies
{
monsterTxt = [[CCTexture2D alloc] initWithCGImage:[UIImage imageNamed:@"obj.png"].CGImage resolutionType:kCCResolutionUnknown];
monster = [CCSprite spriteWithTexture:monsterTxt];
...
//random spawn position etc.
CCMoveTo *movemonster = [CCMoveTo actionWithDuration:7.0 position:ccp(_rocket.boundingBox.origin.x, _rocket.boundingBox.origin.y)];
[monster runAction:[CCSequence actions:movemonster, nil]];
[_monsters addObject:monster]; //adds the sprite to a mutable array
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
...
//determines new position and move sprite there
[monster stopAllActions];
CCMoveTo *movemonster = [CCMoveTo actionWithDuration:7.0 position:ccp(_rocket.boundingBox.origin.x, _rocket.boundingBox.origin.y)];
[monster runAction:[CCSequence actions:movemonster, nil]];
}
Теперь, когда я начинаю игру спрайты собираются к игроку, но когда игрок перемещает врагов не обновляет их назначения, они просто продолжают вниз и останавливается на y-координата игрока. И через некоторое время приложение падает. Что я делаю не так?
1. Вы уверены, что ваш метод adAccelerate вызывается? 2.Вы действительно должны внести изменения в действия в функции обновления ... сохранить данные из обратного вызова didAccelerate в переменной класса. Вы можете получать много звонков, чтобы делатьAccelerate. – FuzzyBunnySlippers
Если ваш блок CCCallBlockN выполняет «некоторое время спустя», откуда вы получаете «монстра» из вашего метода didAccelerate. Похоже, что блок удаляет его из родителя ..., который отменит его. Если бы вы получили доступ к нему в didAccelerate, он бы все еще существовал (не могу сказать, что я вижу здесь). – FuzzyBunnySlippers
жаль, что я наклеил старый код. Этот блок не должен быть там вообще. Но это ничего не меняет, просто враги останавливаются на игроках y-value. – user3139210