Pergunta

Estou usando o andengine para implementar um sprite que pode ser arrastado pela tela usando isso.

Então, o que eu quero fazer é quando o usuário tocar em qualquer lugar da tela para fazer o sprite pular.

ou mova para cima e depois mova para baixo.

Qual é a melhor maneira de fazer isso com o andengine?

Foi útil?

Solução

Isso deve funcionar:

@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
    if(pSceneTouchEvent.isActionDown()) { //Jump only if the user tapped, not moved his finger or something
        final Entity playerEntity = ...;//Get player entity here.

        final float jumpDuration = 2;
        final float startX = playerEntity.getX();
        final float jumpHeight = 100;

        final MoveYModifier moveUpModifier = new MoveYModifier(jumpDuration / 2, startX, startX - jumpHeight); // - since we want the sprite to go up.
        final MoveYModifier moveDownModifier = new MoveYModifier(jumpDuration / 2, startX + jumpHeight, startX);
        final SequenceEntityModifier modifier = new SequenceEntityModifier(moveUpModifier, moveDownModifier);

        playerEntity.registerEntityModifier(modifier);
        return true;
    }
    return false;
}

Lembre-se de que, se você usar isso, sempre que houver um evento ACTION_DOWN, você poderá perder alguns outros manipuladores de eventos para isso (por exemplo, se você tiver botões na tela, eles nunca manipularão o evento).

A maneira de lidar com isso é adicionar quaisquer outras entidades que você deseja receber eventos de toque como áreas de toque para sua cena, Scene.registerTouchArea(ITouchArea) faz isso.Sprites e AnimatedSprites implementam ITouchArea, para que você possa usá-los.

Quando um Scene recebe um TouchEvent para manipular, ele primeiro permite que todos os ITouchAreas que você registrou o manipulem, então se nenhum deles o consumiu, ele tentará o método onSceneTouchEvenet.

Outras dicas

Parece que você teria que configurar um ouvinte mostrado como neste tutorial: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html então talvez use um modificador de movimento conforme mostrado nesta postagem: como mover um objeto sprite usando AndEngine (Android) Espero que você resolva seu problema.;)

Boa sorte- Lijap

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top