Я пытаюсь реализовать собственную прокрутку параллакса в Cocos2d, поскольку встроенная функция параллакса не совсем то, что я ищу (она масштабирует слои, а это не то, что мне нужно)
Итак, мои собственные слои параллакса перезаписывают метод Layers setPosition
следующим образом
- (void) setPosition:(CGPoint)point
{
[super setPosition:CGPointMake(point.x / pRatio, point.y / pRatio)];
}
pRatio
- это int
, который уменьшает величину перемещения слоя, создавая эффект параллакса, который я ищу. И это прекрасно работает, как это.
Однако иногда мне нужно анимировать слой в определенную позицию с помощью MoveTo, поэтому я создал этот метод, который отвечает на NSNotiification
- (void) gotoStartPosition:(NSNotification *)notification
{
CGPoint startPos = CGPointFromString([notification object]);
id moveToStart = [MoveTo actionWithDuration:1 position:startPos];
[self runAction:moveToStart];
}
Это работает до тех пор, пока я не установлю pRatio на значение выше 1. Если pRatio выше 1, то gotoStartPosition
заставляет слой перейти на CGPoint(0,0)
и анимируется в положение оттуда.
Я не могу понять, в какой момент положение Layers устанавливается на 0,0, и я не понимаю, почему он делает это только тогда, когда pRatio выше 1.
Я подозреваю, что это будет что-то мучительно простое, но я думаю, что мой мозг жарен. Любая помощь, с благодарностью.