所以我在我的游戏中使用Slick2D粒子系统来获得一些效果,到目前为止效果还不错。但是现在我发现产生的第一波粒子总是对我来说错位,它应该是它的两倍(x和y)。我尝试使用不同的XML表,但无论我使用什么规格,它都会继续发生。 我当然在互联网上查了一下,但看起来没有人有这个问题:/ 然后我看了一下我开始的那个教程(http://www.youtube.com/watch?v=Re5XJiWy4eQ,它真的很棒),在那个视频中,我很确定,第一个产生没有错位。因为视频描述是对这个视频中使用的文件的下载,所以我下载了它们并尝试了它,但对我来说,有一个错位的东西。 它只发生在产生第一波粒子的时候,所有其他的粒子产生于它们应该到达的位置。
以下是我尝试的XML表的示例:
<?xml version="1.0" encoding="UTF-8"?>
<emitter imageName="" name="Test Particle">
<spawnInterval enabled="true" max="500" min="100"/>
<spawnCount enabled="true" max="2" min="0"/>
<initialLife enabled="true" max="1000.0" min="1000.0"/>
<initialSize enabled="true" max="15" min="8"/>
<xOffset enabled="true" max="5.0" min="-5.0"/>
<yOffset enabled="true" max="10.0" min="-10.0"/>
<initialDistance enabled="true" max="0.0" min="0.0"/>
<speed enabled="true" max="140.0" min="0.0"/>
<length enabled="true" max="2500.0" min="1500.0"/>
<spread value="75.0"/>
<angularOffset value="0.0"/>
<growthFactor value="13.0"/>
<gravityFactor value="3.7"/>
<windFactor value="1.0"/>
<startAlpha value="50.0"/>
<endAlpha value="0.0"/>
<color>
<step b="1.0" g="1.0" offset="0.0" r="1.0"/>
<step b="1.0" g="1.0" offset="1.0" r="1.0"/>
</color>
</emitter>
提前感谢您的帮助:)
答案 0 :(得分:1)
在查看源代码(而不是在我的手机上)之后,我发现ConfigurableEmitter类有两种与setPosition相关的方法。
setPosition(float x, float y):
此方法调用setPosition(x,y,true);它将真值发送给实际的setPosition()方法。
setPosition(float x, float y, boolean moveParticle):
这告诉发射器显示相对于粒子放置的位置(这会导致加倍位置,因为粒子已经设置到该位置开始)。
如何解决问题:
如果要将发射器设置到正确的位置,只需调用configEmitter.setPosition(x,y,false);
答案 1 :(得分:1)
在Java程序中,向emitter.setPosition()添加第三个参数,并将其设置为false,例如。 emitter.setPosition(500,500,false);