Pregunta

Estoy usando un motor para implementar un sprite que se pueda arrastrar por la pantalla usando esto.

Entonces, lo que quiero hacer es que cuando el usuario toque cualquier parte de la pantalla, el sprite saltará.

o sube y luego baja.

¿Cuál es la mejor manera de hacer esto con un motor?

¿Fue útil?

Solución

Esto debería 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;
}

Tenga en cuenta que, si va a utilizar esto, siempre que haya un evento ACTION_DOWN, es posible que se pierda otros controladores de eventos para esto (por ejemplo, si tiene botones en pantalla, nunca controlarán el evento).

La forma de manejarlo es usar agregar cualquier otra entidad que desee para recibir eventos táctiles como áreas táctiles para su escena, Scene.registerTouchArea(ITouchArea) lo hace.Sprites y AnimatedSprites implementan ITouchArea, por lo que puede utilizarlos.

Cuando un Scene recibe un TouchEvent para manejar, primero dejará que todos los ITouchArea que hayas registrado lo manejen, luego, si ninguno de ellos lo consumió, probará el método onSceneTouchEvenet.

Otros consejos

Parece que tendría que configurar un oyente que se muestra en este tutorial: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html y luego quizás use un modificador de movimiento como se muestra en esta publicación: cómo mover un objeto sprite usando AndEngine (Android) Espero que resuelva su problema.;)

Buena suerte: Lijap

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top