Libgdx 粒子效果在运行时更改颜色

Libgdx 粒子效果在运行时更改颜色,libgdx,game-engine,Libgdx,Game Engine,我需要根据游戏中的某个用户事件更改我的粒子效果颜色,因为这就是我正在做的: float temp[] = new float[4]; temp[0] = 0.937f; temp[1] = 0.325f; temp[2] = 0.314f; pe.getEmitters().first().getTint().setColors(temp); pe.start(); 在渲染中,我正在这样做: pe.draw(batch, Gdx.graphics.getDeltaTime());

我需要根据游戏中的某个用户事件更改我的粒子效果颜色,因为这就是我正在做的:

 float temp[] = new float[4];
 temp[0] = 0.937f;
 temp[1] = 0.325f;
 temp[2] = 0.314f;
 pe.getEmitters().first().getTint().setColors(temp);
 pe.start();
在渲染中,我正在这样做:

pe.draw(batch, Gdx.graphics.getDeltaTime());
但不幸的是,我得到了这个错误:

java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
at com.badlogic.gdx.graphics.g2d.ParticleEmitter$GradientColorValue.getColor(ParticleEmitter.java:1313)
at com.badlogic.gdx.graphics.g2d.ParticleEmitter.activateParticle(ParticleEmitter.java:439)
at com.badlogic.gdx.graphics.g2d.ParticleEmitter.addParticle(ParticleEmitter.java:154)
at com.badlogic.gdx.graphics.g2d.ParticleEmitter.draw(ParticleEmitter.java:299)
at com.badlogic.gdx.graphics.g2d.ParticleEffect.draw(ParticleEffect.java:74)
at com.approduction.game.GameScreen.render(GameScreen.java:218)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1557)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1263)

我不知道我做错了什么,我阅读了文档,并根据文档做了所有事情。任何帮助都将是救世主。。。提前感谢。

您的浮点数组长度错误

实际上,您不需要创建新数组。通过将颜色填充到阵列中,可以完全避免此问题,如下所示:

 float temp[] = pe.getEmitters().first().getTint().getColors();
 temp[0] = 0.937f;
 temp[1] = 0.325f;
 temp[2] = 0.314f;
 pe.start();