Поиск абсолютной позиции дочернего SKNode?

У меня есть SKSpriteNode, который является родителем (то есть дочерним элементом) прокручиваемого фона. SKSpriteNode не перемещается сам по себе, он просто перемещается вместе с прокручиваемым фоном. Каков наилучший способ найти абсолютное положение SKSpriteNode при перемещении фона.


person fuzzygoat    schedule 18.02.2014    source источник


Ответы (1)


CGPoint positionInScene = [self.scene convertPoint:self.position 
                                                  fromNode:self.parent];

Однако convertPoint:fromNode: довольно дорог, особенно если вы используете его в методе update. Я бы предпочел просто добавить позицию x childNode к позиции x parentNode:

CGFloat xPosition = self.position.x + self.parent.position.x;
person Andrey Gordeev    schedule 18.02.2014
comment
Спасибо, Андрей, я ранее делал добавление, о котором вы упомянули, но пытался convertPoint:toNode: Я посмотрю получше и заставлю его работать. В конечном счете, я воспользуюсь вашим советом и использую дополнение, так как я хочу использовать его внутри обновления. Очень признателен. - person fuzzygoat; 18.02.2014
comment
Пожалуйста, не говорите такие вещи, как довольно дорого, без каких-либо ссылок на факты (реальные измерения) или, по крайней мере, упоминания того, насколько он медленнее по сравнению с альтернативами (в среднем или в худшем случае). Дело в том, что (и не только) новички часто прислушиваются к таким советам и стараются по возможности избегать использования таких функций (преждевременная оптимизация, основанная не менее чем на слуху). Конечно, ручной способ будет немного быстрее, но я сомневаюсь, что это будет иметь какое-либо значение почти во всех случаях использования. - person LearnCocos2D; 19.02.2014
comment
Добавление таких позиций x не учитывает zRotation, но convertPoint делает это. - person nicopolyptic; 04.05.2014
comment
Также второй способ не рекурсивно проходит через цепочку родителей, поэтому он работает только для дочернего узла узла дочернего элемента сцены. - person hariseldon78; 23.01.2015