Хвост частиц на движущемся спрайте с AndEngine

Я пытаюсь создать хвост для спрайта, который движется по экрану.

Мне нужно что-то вроде этого: ">Как добавить путь следа для движущегося спрайта в andengine

К сожалению, тот, кто задал вопрос, не объяснил, как ему удалось создать хвост (даже если он «точечный»). Что я могу сделать, так это создать хвост, который находится в излучающем спрайте, но когда я вращаю спрайт , также хвост вращается, создавая искусственный эффект, что совсем не приятно.

Так что я бы хотел, чтобы хвост, который когда-то был «испущен», оставался по-прежнему в соответствии со сценой.


person Stefano Liboni    schedule 12.12.2015    source источник
comment
Вероятно, вы прикрепили эмиттер частиц к своему срайту, и когда вы перемещаете свой спрайт или вращаете его, все частицы движутся и вращаются вместе с ним? Я правильно понимаю? если да, у меня была аналогичная проблема, и, насколько я помню, я создал дополнительный объект, который копировал позицию спрайта, и к этому объекту был прикреплен эмиттер. Позже сегодня я попытаюсь найти свой код и опубликовать его здесь, но я надеюсь, что вы поняли идею.   -  person Łukasz Motyczka    schedule 15.12.2015
comment
Да, у вас есть ситуация... Я подожду, чтобы увидеть код, чтобы полностью понять ваш метод. Я тоже пытался создать новый объект (прямоугольник), который onManagedUpdate позиционировал себя рядом с основным объектом и на котором был эмиттер, но это не сработало.   -  person Stefano Liboni    schedule 15.12.2015


Ответы (1)


Это работает для меня:

PointParticleEmitter emitter = new PointParticleEmitter(240, 400){

        public void onUpdate(final float pSecondsElapsed){
            super.onUpdate(pSecondsElapsed);

            setCenterX(star.getX());

        }

    };


    SpriteParticleSystem spritePS = new SpriteParticleSystem(emitter, 1, 5, 50, starTR, getVertexBufferObjectManager());
    spritePS.addParticleInitializer(new ScaleParticleInitializer<Sprite>(0.5f));
    spritePS.addParticleInitializer(new VelocityParticleInitializer<Sprite>(-10, 10, 100, 200));
    spritePS.addParticleInitializer(new AccelerationParticleInitializer<Sprite>(0f, 50f));
    spritePS.addParticleInitializer(new RotationParticleInitializer<Sprite>(0f, 360f));
    spritePS.addParticleInitializer(new ExpireParticleInitializer<Sprite>(1.0f, 15.0f));
    spritePS.addParticleModifier(new RotationParticleModifier<Sprite>(0.0f, 15.0f, 0, 360));


    scene.attachChild(spritePS);

звезда - это спрайт, который я хочу испускать из частиц. Когда я перетаскиваю его, частицы не двигаются (кроме собственного движения вверх)

person Łukasz Motyczka    schedule 16.12.2015
comment
Прекрасно работает! По сути, ParticleSystem ДОЛЖЕН быть дочерним элементом сцены, иначе все испускаемые спрайты будут привязаны к родителю и будут двигаться вместе с ним. Чтобы установить центр эмиттера, я использовал частицуSystem.getParticleEmitter(), привел к BaseParticleEmitter и использовал setCenter. - person Stefano Liboni; 20.12.2015