2014-02-21 1 views
0

У меня есть SKSpriteNode для моего _player и есть два ребенка для _player узла, которые составляют мой персонаж.Sprite Kit flip player XScale

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

Когда мне нужен символ, который стоит слева, я пробовал использовать 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. Нужно ли мне два экземпляра игрока, стоящего лицом к каждому направлению. Нужно ли мне два набора спрайтов?

+0

Вы когда-нибудь разрешали это? Мне интересно, как справиться с спрайтом, который может «смотреть» влево или вправо и должен иметь поле зрения в этом направлении ... –

ответ

0

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

+0

Спасибо за ответ. Они используют xScale так же, как и я, но для них это было не так сложно, потому что у них нет ни одного дочернего узла. также их характер имеет одинаковую форму вперед и назад, поэтому у них не будет той же самой проблемы с обнаружением коллизий, которые у меня есть. – Early73