Java LibGDX:粒子尺度
在我的游戏中,我使用Java LibGDX:粒子尺度,java,android,libgdx,particles,Java,Android,Libgdx,Particles,在我的游戏中,我使用 static final float FRUSTUM_WIDTH = 10; static final float FRUSTUM_HEIGHT = 15; 所以当我画这些粒子时,它们占据了整个屏幕,非常巨大!那么,我如何缩小它们的规模以满足我的需要呢 //Pew Labs您可以使用“粒子编辑器”(particle editor)在此处调整大小: 要么使用“粒子编辑器”(老实说,我认为调整粒子大小不是一个好主意,因为您提到粒子不会变得太小(对于其他任何我真正推荐的
static final float FRUSTUM_WIDTH = 10;
static final float FRUSTUM_HEIGHT = 15;
所以当我画这些粒子时,它们占据了整个屏幕,非常巨大!那么,我如何缩小它们的规模以满足我的需要呢
//Pew Labs您可以使用“粒子编辑器”(particle editor)在此处调整大小:
要么使用“粒子编辑器”(老实说,我认为调整粒子大小不是一个好主意,因为您提到粒子不会变得太小(对于其他任何我真正推荐的方法),要么打开“粒子效果”文件。它应该由编辑器生成,或者您可以从示例中复制它。在此文件中,搜索以下字段:
- Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 0.6
highMax: 0.6
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
根据需要调整
highMin
和highMax
我使用了与Victor相同的方法,但对我有效的是:
ParticleEffect pe = new ParticleEffect();
pe.load(Gdx.files.internal("data/particle/particle.p"), Gdx.files.internal("data/particle"));
pe.setPosition(x, y);
float pScale = 0.2f;
float scaling = pe.getEmitters().get(0).getScale().getHighMax();
pe.getEmitters().get(0).getScale().setHigh(scaling * pScale);
scaling = pe.getEmitters().get(0).getScale().getLowMax();
pe.getEmitters().get(0).getScale().setLow(scaling * pScale);
scaling = pe.getEmitters().get(0).getVelocity().getHighMax();
pe.getEmitters().get(0).getVelocity().setHigh(scaling * pScale);
scaling = pe.getEmitters().get(0).getVelocity().getLowMax();
pe.getEmitters().get(0).getVelocity().setLow(scaling * pScale);
ParticleEffect effect = new ParticleEffect();
effect.load(Gdx.files.internal("particle/version1.p"), Gdx.files.internal("particle"));
effect.setPosition(x, .y);
float pScale = 0.02f;
float scaling;
Array<ParticleEmitter> emitters = effect.getEmitters();
for (ParticleEmitter e : emitters) {
scaling = e.getScale().getHighMax();
e.getScale().setHigh(scaling * pScale);
scaling = e.getScale().getLowMax();
e.getScale().setLow(scaling * pScale);
scaling = e.getVelocity().getHighMax();
e.getVelocity().setHigh(scaling * pScale);
scaling = e.getVelocity().getLowMax();
e.getVelocity().setLow(scaling * pScale);
scaling = e.getSpawnHeight().getHighMax();
e.getSpawnHeight().setHighMax(scaling * pScale);
scaling = e.getSpawnHeight().getLowMax();
e.getSpawnHeight().setLowMax(scaling * pScale);
scaling = e.getSpawnHeight().getHighMin();
e.getSpawnHeight().setHighMin(scaling * pScale);
scaling = e.getSpawnHeight().getLowMin();
e.getSpawnHeight().setLowMin(scaling * pScale);
scaling = e.getSpawnWidth().getHighMax();
e.getSpawnWidth().setHighMax(scaling * pScale);
scaling = e.getSpawnWidth().getLowMax();
e.getSpawnWidth().setLowMax(scaling * pScale);
scaling = e.getSpawnWidth().getHighMin();
e.getSpawnWidth().setHighMin(scaling * pScale);
scaling = e.getSpawnWidth().getLowMin();
e.getSpawnWidth().setLowMin(scaling * pScale);
scaling = e.getXOffsetValue().getLowMax();
e.getXOffsetValue().setLowMax(scaling * pScale);
scaling = e.getXOffsetValue().getLowMin();
e.getXOffsetValue().setLowMin(scaling * pScale);
scaling = e.getYOffsetValue().getLowMax();
e.getYOffsetValue().setLowMax(scaling * pScale);
scaling = e.getYOffsetValue().getLowMin();
e.getYOffsetValue().setLowMin(scaling * pScale);
}
effect.start();
ParticleEffect效果=新ParticleEffect();
load(Gdx.files.internal(“particle/version1.p”)、Gdx.files.internal(“particle”);
效应。设定位置(x,.y);
浮动pScale=0.02f;
浮动缩放;
数组发射器=effect.getEmitters();
用于(粒子发射器e:发射器){
缩放=e.getScale().getHighMax();
e、 getScale().setHigh(缩放*pScale);
缩放=e.getScale().getLowMax();
e、 getScale().setLow(缩放*pScale);
缩放=e.getVelocity().getHighMax();
e、 getVelocity().setHigh(缩放*pScale);
缩放=e.getVelocity().getLowMax();
e、 getVelocity().setLow(缩放*pScale);
缩放=e.getSpawnHeight().getHighMax();
e、 getSpawnHeight().setHighMax(缩放*pScale);
缩放=e.getSpawnHeight().getLowMax();
e、 getSpawnHeight().setLowMax(缩放*pScale);
缩放=e.getSpawnHeight().getHighMin();
e、 getSpawnHeight().setHighMin(缩放*pScale);
缩放=e.getSpawnHeight().getLowMin();
e、 getSpawnHeight().setLowMin(缩放*pScale);
缩放=e.getSpawnWidth().getHighMax();
e、 getSpawnWidth().setHighMax(缩放*pScale);
缩放=e.getSpawnWidth().getLowMax();
e、 getSpawnWidth().setLowMax(缩放*pScale);
缩放=e.getSpawnWidth().getHighMin();
e、 getSpawnWidth().setHighMin(缩放*pScale);
缩放=e.getSpawnWidth().getLowMin();
e、 getSpawnWidth().setLowMin(缩放*pScale);
缩放=e.getXOffsetValue().getLowMax();
e、 getXOffsetValue().setLowMax(缩放*pScale);
缩放=e.getXOffsetValue().getLowMin();
e、 getXOffsetValue().setLowMin(缩放*pScale);
缩放=e.getYOffsetValue().getLowMax();
e、 getYOffsetValue().setLowMax(缩放*pScale);
缩放=e.getYOffsetValue().getLowMin();
e、 getYOffsetValue().setLowMin(缩放*pScale);
}
效果。开始();
就个人而言,为了根据用户的屏幕处理我的粒子大小,我使用了缩放视口
,它允许您在固定大小下工作,并根据设备的屏幕大小自动缩放。我通常将ScalingViewport
用于缩放;这可以防止粒子拉伸并看起来不好。这和所有其他未使用最新库的粒子,有帮助吗?就我个人而言,我已经有一段时间没有使用libgdx了,对不起:(。