2016-09-23 6 views
1

мне нужно изменить цвет моего эффекта частиц цвета в соответствии с некоторым пользовательским событием в моей игре на что это то, что я делаю:Эффект частиц Изменение цвета во время выполнения

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) 

я не знаю, что я делаю неправильно, я прочитал документацию и сделал все в соответствии с ней любая помощь будет спасителем ... Спасибо заранее.

ответ

0

Ваш массив с плавающей точкой имеет неправильную длину.

На самом деле вам не нужно создавать новый массив. Вы можете полностью избежать этой проблемы, заполнив свои цвета в массиве, который у него уже есть:

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

Спасибо .. это сработало .. :) – Ashwani