SKEmitterNode Фактическая позиция частицы после positionRange

Конечная цель: генерировать частицы внутри области (получившей этот бит), которые все ускоряются до точки.

Если бы я знал положение частицы, все было бы в порядке, но я генерировал частицы с помощью componentRange, то есть я не знаю точное местоположение каждой частицы.

Есть ли способ получить местоположение каждой частицы после того, как она была сгенерирована?

Мой текущий план состоит в том, чтобы прикрепить actionAction с блоком, который может прочитать окончательную визуализированную позицию.

2 ответа

Нет, как говорится в SKEmitterNode Согласно документации, частицы являются объектами, находящимися в частной собственности Sprite Kit, вы не можете получить к ним доступ после того, как они сгенерированы, поэтому текущая позиция каждой отдельной частицы не будет восстановлена. Таким образом, ваш план чтения позиции в блоке действий частицы не будет работать, так как действия выполняются только новыми частицами, которые не подлежат манипулированию / доступу как отдельные узлы.

Вы можете настроить их поведение заранее, используя particleRange или же particleAction, Тем не менее SKCropNode класс может быть выходом - вы можете попробовать замаскировать эмиттер частиц, чтобы частицы за пределами желаемой области не визуализировались.

Пока частица не ускоряется (я могу жить без этого), я смог заставить их всех перейти в нужное место, используя:

emitterNode.particleAction = [SKAction moveTo:location duration:1];

Который настолько близок, насколько это возможно.

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