2014-02-18 4 views
6

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

ответ

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

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

CGFloat xPosition = self.position.x + self.parent.position.x; 
+0

Спасибо вам Андрей, я ранее делал надстройку, что вы упоминаете, но пытается convertPoint: toNode: у меня будет лучше посмотри и получи его. В конечном итоге я отвечу на ваш совет и добавлю, поскольку я хочу использовать его внутри обновления. Очень признателен. – fuzzygoat

+4

Пожалуйста, не говорите такие вещи, как «довольно дорого» без каких-либо ссылок на факты (реальные измерения) или, по крайней мере, упоминание о том, какой фактор он медленнее по сравнению с альтернативами (в среднем или худшем случае). Дело в том, что (не только) новички часто принимают такие советы и стараются избегать использования таких функций, если это вообще возможно (преждевременная оптимизация, основанная на слухах не меньше). Конечно, ручной способ будет немного быстрее, но я сомневаюсь, что это будет иметь значение практически в каждом случае использования. – LearnCocos2D

+2

Добавление позиций x, подобных этому, не учитывает zRotation, но convertPoint делает это. – nicopolyptic

Смежные вопросы