- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 LibGDX 的新手...我正在尝试将粒子效果附加到项目符号对象。我有发射多发子弹的播放器,我想在发射的子弹后添加一些烟雾和火焰。
问题是我每次都没有得到相同的效果。最初第一颗子弹效果看起来像我想要的,其他每颗子弹后面都有较短的轨迹。就像没有可绘制的粒子。
我希望尽可能使用一个粒子发射器对象。不希望每个项目符号对象都有多个实例。
在绘制每个项目符号后,我尝试使用 reset() 方法,但它看起来又不一样了。只有第一个还好,其他的看起来都有点不好。
有办法吗?
帮助!
这是代码片段:
初始化:
bulletTexture = new Texture("data/bullet.png");
bulletTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Load particles
bulletFire = new ParticleEmitter();
try {
bulletFire.load(Gdx.files.internal("data/bullet_fire_5").reader(2048));
} catch (IOException e) {
e.printStackTrace();
}
// Load particle texture
bulletFireTexture = new Texture("data/fire.png");
bulletFireTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// Attach particle sprite to particle emitter
Sprite particleSprite = new Sprite(bulletFireTexture);
bulletFire.setSprite(particleSprite);
bulletFire.start();
在渲染方法中:
// Draw bullets
bulletIterator = bullets.iterator();
while (bulletIterator.hasNext()) {
bullet = bulletIterator.next();
bulletFire.setPosition(bullet.getPosition().x + bullet.getWidth() / 2,
bullet.getPosition().y + bullet.getHeight() / 2);
setParticleRotation(bullet);
batch.draw(bulletTexture, bullet.getPosition().x,
bullet.getPosition().y, bullet.getWidth() / 2,
bullet.getHeight() / 2, bullet.getWidth(),
bullet.getHeight(), 1, 1, bullet.getRotation(), 0, 0,
bulletTexture.getWidth(), bulletTexture.getHeight(), false,
false);
bulletFire.draw(batch, Gdx.graphics.getDeltaTime());
}
最佳答案
如评论所述,问题在于您对多个项目符号使用单一效果。我怀疑它设置为非连续的,因此持续时间有限。随着时间的推移,效果会逐渐消失。
我建议为效果创建一个粒子效果池,并从/free()
obtain()
到池中。为每个项目符号附加一个效果。这允许您运行多个效果,同时限制垃圾收集(由于池)以及避免为每个新效果加载 .p
文件。该池是使用每次调用 obtain()
时复制的模板创建的。请注意在调用 free()
时对 PooledEffect 的转换。
import com.badlogic.gdx.graphics.g2d.ParticleEffect;
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool;
import com.badlogic.gdx.graphics.g2d.ParticleEffectPool.PooledEffect;
...
ParticleEffect template = new ParticleEffect();
template.load(Gdx.files.internal("data/particle/bigexplosion.p"),
..texture..);
ParticleEffectPool bigExplosionPool = new ParticleEffectPool(template, 0, 20);
...
ParticleEffect particle = bigExplosionPool.obtain();
... // Use the effect, and once it is done running, clean it up
bigExplosionPool.free((PooledEffect) particle);
相反,您可以跳过池并使烟雾粒子效果循环(连续)。这可能无法准确地满足您的需求,并且可能被认为是一种拼凑,但在紧要关头可能会奏效。
关于java - libgdx 粒子编辑器的多种用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178141/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
我有实体: @Entity @Table(name = "CARDS") public class Card { @ManyToOne @JoinColumn(name = "PERSON_I
我正在尝试计算二维多边形的表面法线。我正在使用 OpenGL wiki 中的 Newell 方法来计算表面法线。 https://www.opengl.org/wiki/Calculating_a_S
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我这里有以下 XML: Visa, Mastercard, , , , 0, Discover, American Express siteonly, Buyer Pay
即将发生的 Google 政策变更迫使我们实现一个对话框,以通知欧盟用户有关 Cookie/设备标识符用于广告和分析的情况。我只想向欧盟用户显示此对话框。我不想使用额外的权限(例如 android.p
本文分享自华为云社区《华为大咖说 | 企业应用AI大模型的“道、法、术” ——道:认知篇》,作者:华为云PaaS服务小智。 本期核心观点 上车:AGI是未来5~10年内,每个人都无法回避的技
我有一个与酒精相关的网站,需要先验证年龄,然后才能让他们进入该网站。我使用 HttpModule 来执行此操作,该模块检查 cookie,如果未设置,我会将它们重定向到验证页面。我验证他们的年龄并存储
在欧盟,我们有一项法律,要求网页请求存储 cookie 的许可。我们大多数人都了解 cookie 并同意它们,但仍然被迫在任何地方明确接受它们。所以我计划编写这个附加组件(ff & chrome),它
以下在 C 和/或 C++ 中是否合法? void fn(); inline void fn() { /*Do something here*/ } 让我担心的是,第一个声明看起来暗示函数将被定义
我是一名优秀的程序员,十分优秀!