LiquidFun рендеринг частиц

Я использую LiquidFun для имитации воды, это физический движок, основанный на box2d, который использует частицы. Моя проблема заключается в рендеринге частиц определенного цвета.

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

public void createWater(float x, float y){
        ParticleDef def = new ParticleDef();
        def.color.set(Color.Red); //set particle color
        def.flags.add(ParticleDef.ParticleType.b2_tensileParticle);
        def.flags.add(ParticleDef.ParticleType.b2_colorMixingParticle);
        def.position.set(x, y);
        int index = system.createParticle(def);
    }

ParticleDebugRenderer:

pdr = new ParticleDebugRenderer(Color.BLUE, maxParticles); //set as BLUE

если я назначу частицу КРАСНОЙ, она все равно будет отображаться синей, потому что ParticleDebugRenderer установлен на СИНЮЮ.


person Kevin Bryan    schedule 31.08.2016    source источник
comment
Что делать, если у вас было несколько вод и вы хотите их отладить? Они были бы все синие, и вы бы ничего не увидели?   -  person pr0gramist    schedule 31.08.2016
comment
Полагаю, что так? но я запутался при рендеринге их в определенный цвет, потому что def.color.set() был бы бесполезен из-за ParticleDebufRenderer   -  person Kevin Bryan    schedule 31.08.2016


Ответы (1)


Глядя на исходный код, мы можем найти 2 рендерера.

ParticleDebugRenderer.java и ColorParticleRenderer.java

Разница в коде между ними заключается в том, что ColorParticleRenderer получает цвет от ParticleSystem, а ParticleDebugRenderer получает цвет от конструктора.

Основное отличие использования заключается в том, что мы используем ColorParticleRenderer каждый раз, когда мы не занимаемся отладкой. ParticleDebugRenderer используется, когда мы хотим отладить частицу. Мы используем его, потому что не хотим вносить изменения в цвета при определении ParticleSystem, потому что

  1. Одного определения может быть несколько ParticleSystem, поэтому менять цвет в определении будет бессмысленно.
  2. Легче изменить одну строку рисунка, чем 1 строку определения (вы не говорите: о, я забыл, что я меняю цвет в определении)

Ваше замешательство происходит из-за того, что вы используете ParticleDebugRenderer, когда вы не отлаживаете, поэтому вы назначаете один и тот же цвет дважды.

person pr0gramist    schedule 31.08.2016
comment
спасибо, не знал, что есть colorParticleRenderer. Есть что-то похожее на бокс2д тел? альтернатива классу box2dDebugRenderer. - person Kevin Bryan; 04.09.2016
comment
Я думаю, что нет такого. В этом не было бы особого смысла, поскольку мы редко рисуем тела box2D в виде форм, заполненных цветом. - person pr0gramist; 04.09.2016