Pixi.js: Множество контейнеров с частицами на экране создает потрясающий психоделический взрыв

Созданный на 5 авг. 2018  ·  3Комментарии  ·  Источник: pixijs/pixi.js

Ожидаемое поведение

Я работаю над игрой, в которой, когда встречаются 2 объекта, один поглощает другой, и я создаю эффект поглощения, используя контейнер частиц и несколько спрайтов. Однако, если у меня на экране слишком много этих эффектов одновременно, это создает бесконечный психоделический взрыв, что отчасти потрясающе, но не совсем то, к чему я стремился. Однако, если я перейду с ParticleContainer на обычный контейнер, проблема исчезнет. Кроме того, проблема возникает только в том случае, если на экране одновременно отображается тонна контейнеров с частицами. Если будет меньше, этого не произойдет.

Обновление: на самом деле это все еще происходит с обычным контейнером pixi, когда игра запускается в мобильном браузере, так что, возможно, проблема с ограничением памяти?

Вот моя иерархия представлений для каждого эффекта:

PIXI.Container // Effect main container. Gets scaled/positioned
    PIXI.Sprite // This is an overall glow
    PIXI.particles.ParticleContainer // This is the streaks effect
        PIXI.Sprite[] // Individual streak of light. Gets rotated and alpha'ed

Вот гифка, как это должно выглядеть:
regularcontainer

И вот одна из проблем:
particlecontainerexplosion

  • pixi.js версия: _e.g. 4.8.1
  • Браузер: _e.g. Хром 67.0.3396.99
  • Устройство: _ например. Desktop_OS_X

Самый полезный комментарий

Так что, оказывается, я на самом деле просто тупой по этому поводу. После преследования некоторых ложных выводов я обнаружил, что параметр интенсивности моих эффектов был неправильно привязан к частоте кадров, чтобы заставить их исчезать быстрее, если игра тормозит. Однако моя математика была неправильной, и это заставило их интенсивность возрастать, что еще больше отставало от игры, создавая порочный круг. Между прочим, я обнаружил, что в моем случае обычные контейнеры кажутся немного более производительными, чем контейнеры для частиц.

Все 3 Комментарий

Это не ошибка, это особенность!

Так что, оказывается, я на самом деле просто тупой по этому поводу. После преследования некоторых ложных выводов я обнаружил, что параметр интенсивности моих эффектов был неправильно привязан к частоте кадров, чтобы заставить их исчезать быстрее, если игра тормозит. Однако моя математика была неправильной, и это заставило их интенсивность возрастать, что еще больше отставало от игры, создавая порочный круг. Между прочим, я обнаружил, что в моем случае обычные контейнеры кажутся немного более производительными, чем контейнеры для частиц.

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги