Sprite Kit флип-плеер XScale

У меня есть SKSpriteNode для моего _player, и есть два дочерних элемента для узла _player, которые составляют моего персонажа.

спрайты с этой конфигурацией имеют символ, направленный вправо.

когда мне нужно, чтобы символ был повернут влево, я попытался использовать xScale = -1.0, но когда я это делаю, не получается, что кадры отражают то, что видно на экране, потому что мой CGRectIntersectsRect ведет себя так, как если бы персонаж все еще был направлен в первоначальное направление.

в дополнение к проблеме cgrect я поворачивал персонажа к объектам, поэтому мне пришлось сделать что-то вроде этого:

 if( sprite.xScale == -1.0){
    sprite.zRotation = atan2f(direction.y, direction.x);
    } else {
        sprite.zRotation = atan2f(-direction.y, -direction.x);
    }

Как правильно перевернуть плеер. Кажется, что математика станет излишне сложной для моих обнаружений столкновений, если я использую xScale. Нужны ли мне два экземпляра игрока по одному в каждом направлении? Нужны ли мне два набора спрайтов?

1 ответ

Вот учебник, который может решить вашу проблему. http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases Я нашел это очень полезным. медведь в проекте переворачивается в зависимости от того, к какой стороне экрана вы прикоснулись. номер 6, где я считаю, что ваш ответ...

Это поздно, но я думаю, что нашел решение. Создайте глобальный узел (который отслеживает положение) и добавьте свой узел xscale, yscale в качестве дочернего к этому глобальному узлу. Теперь вы можете отслеживать позицию (глобальную), не беспокоясь о том, что -xscale/-yscale (дочерний элемент) влияет на поиск позиции на сцене.

Другие вопросы по тегам