У меня есть SKSpriteNode, который является родителем (то есть дочерним элементом) прокручиваемого фона. SKSpriteNode не перемещается сам по себе, он просто перемещается вместе с прокручиваемым фоном. Каков наилучший способ найти абсолютное положение SKSpriteNode при перемещении фона.
Поиск абсолютной позиции дочернего SKNode?
Ответы (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
Спасибо, Андрей, я ранее делал добавление, о котором вы упомянули, но пытался convertPoint:toNode: Я посмотрю получше и заставлю его работать. В конечном счете, я воспользуюсь вашим советом и использую дополнение, так как я хочу использовать его внутри обновления. Очень признателен.
- person fuzzygoat; 18.02.2014
Пожалуйста, не говорите такие вещи, как довольно дорого, без каких-либо ссылок на факты (реальные измерения) или, по крайней мере, упоминания того, насколько он медленнее по сравнению с альтернативами (в среднем или в худшем случае). Дело в том, что (и не только) новички часто прислушиваются к таким советам и стараются по возможности избегать использования таких функций (преждевременная оптимизация, основанная не менее чем на слуху). Конечно, ручной способ будет немного быстрее, но я сомневаюсь, что это будет иметь какое-либо значение почти во всех случаях использования.
- person LearnCocos2D; 19.02.2014
Добавление таких позиций x не учитывает zRotation, но convertPoint делает это.
- person nicopolyptic; 04.05.2014
Также второй способ не рекурсивно проходит через цепочку родителей, поэтому он работает только для дочернего узла узла дочернего элемента сцены.
- person hariseldon78; 23.01.2015