Вы можете перемещать первый спрайт без использования действия, вручную обновляя его позицию в функции nextFrame: (ccTime) dt своего рода, таким образом было бы легко обновить другую позицию спрайта на основе вашей позиции спрайта плюс смещение расположить его сверху.
Другим решением может быть удаление спрайта-подписчика из его родительского элемента и добавление его в качестве дочернего элемента движущегося узла, я думаю, что это можно сделать без мерцания и потери производительности.
редактирование:
другое решение (возможно, лучшее)
хороший подход, который отлично работает с действиями, поэтому вам не нужно вручную планировать движения
Вы можете добавить свойство к движущемуся спрайту (вам нужно создать подкласс из CCSprite, если вы этого еще не сделали), чтобы сохранить ссылку на последователя
@property (readwrite, nonatomic, assign) CCSprite *follower;
@property (readwrite, nonatomic) BOOL followerActive;
затем в своих игровых элементах вы можете создать оба спрайта и добавить их в качестве дочерних элементов вашего основного слоя, а затем добавить слабую ссылку от вашего объекта к последователю
platform.follower = followerSprite;
и когда вам нужно включить следующую платформу .followerActive = YES;
в этот момент в движущемся спрайте вы можете переопределить свойство setPosition
-(void) setPosition:(CGPoint)position {
if (self.followerActive) {
self.follower.position = ccpAdd (position, offset);
}
[super setPosition: position];
}