2016-08-31 7 views
0

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

Какова цель установки цвета частиц на его определение частиц? когда вам также нужно установить цвет, на котором частица будет отображаться на 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 

если установить частицу, чтобы быть RED он все равно будет вынесено в синий цвет, потому что ParticleDebugRenderer установлен в BLUE.

+0

Что делать, если у вас было несколько вод, и вы хотите их отладить? Они будут все синие, и вы не увидите много? – pr0gramist

+0

Я так думаю? но я запутался в том, что они отображают определенный цвет, потому что def.color.set() будет бесполезен из-за ParticleDebufRenderer –

ответ

1

Просмотрев исходный код, мы можем найти 2 рендера.

ParticleDebugRenderer.java и ColorParticleRenderer.java

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

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

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

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

+0

спасибо, не знал, что есть colorParticleRenderer. Есть ли что-то похожее на body2d? альтернатива классу box2dDebugRenderer. –

+0

Я думаю, что нет такой вещи. Это не имеет большого смысла, поскольку мы редко рисуем тела box2D как формы, заполненные цветом. – pr0gramist