android - 和引擎。粒子效果跟随 Sprite 太慢了。如何减少延迟

标签 android andengine

我正在使用一个跟随球的粒子系统。当球移动时,粒子效果似乎跟随 Sprite 太慢了。

我以这种方式清除粒子:

final CircleOutlineParticleEmitter ballEmitter = new CircleOutlineParticleEmitter(0, 0, 6);
final ParticleSystem particleBallSystem = new ParticleSystem(ballEmitter, 30, 30, 180, this.mParticleTextureRegion);

particleBallSystem.addParticleInitializer(new ColorInitializer(0, 0, 1));
particleBallSystem.addParticleInitializer(new AlphaInitializer(1));
particleBallSystem.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
particleBallSystem.addParticleInitializer(new VelocityInitializer(-2, 2, -2, 3));
particleBallSystem.addParticleInitializer(new RotationInitializer(0.0f, 180.0f));

particleBallSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.ScaleModifier(1.0f, 1.2f, 0, 5));
particleBallSystem.addParticleModifier(new ColorModifier(0, 0, 0.2f, 0.1f, 0, 1, 1, 3));
particleBallSystem.addParticleModifier(new ColorModifier(0, 0, 0.1f, 0.2f, 1, 1, 4, 6));
particleBallSystem.addParticleModifier(new AlphaModifier(0, 1, 0, 1));
particleBallSystem.addParticleModifier(new AlphaModifier(1, 0, 5, 6));
particleBallSystem.addParticleModifier(new ExpireModifier(1, 6));

并在触摸事件中设置中心(在触摸移动时):

ballEmitter.setCenter(newX-15, newY);

有没有办法减少粒子系统的延迟?

最佳答案

扩展 PhysicsConnector 类并覆盖 onUpdate 方法。在更新方法中设置发射器的中心。因此,每次 Sprite 的位置更新为 Body 的值时,发射器位置都会更新。

class MyPhysicsConnector extends PhysicsConnector
{
    public MyPhysicsConnector(IAreaShape pAreaShape, Body pBody, boolean pUdatePosition, boolean pUpdateRotation)
    {
        super(pAreaShape, pBody, pUdatePosition, pUpdateRotation);
    }

    @Override
    public void onUpdate(float pSecondsElapsed)
    {
        super.onUpdate(pSecondsElapsed);

        final IShape shape = this.mShape;

        ballEmitter.setCenter(shape.getX(), shape.getY());
    }
}

确保当您将 Ball 的 body 连接到它的 sprite 时,您传入了一个 MyPhysicsConnector 实例

physicsWorld.registerPhysicsConnector(new MyPhysicsConnector(ballSprite, ballBody, true, true));

关于android - 和引擎。粒子效果跟随 Sprite 太慢了。如何减少延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264087/

相关文章:

android - 如何删除条形图图例

java - 如何在HubProxy signalr android上使用invoke

android - 如何使用 Android NDK 和 Windows 构建 OpenSSL 以生成 libcrypto.a

android - 运行android应用程序时出现java.lang.UnsatisfiedLinkError

android - 从 Intent 调用 SimpleBaseGameActivity

android - andEngine 中的 isActionUp 不起作用

android - 不允许按下按钮产生负值

android - 从第三个 Activity 设置主 Activity 中的列表数据?

android - 和引擎唤醒锁

sprite - 使用 Andengine 安全删除 Sprite