Slick2D粒子系统 - 第一次产生时粒子错位

时间:2014-03-22 19:58:36

标签: slick2d particles particle-system

所以我在我的游戏中使用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>

提前感谢您的帮助:)

2 个答案:

答案 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);