Domanda

Sto usando andengine per implementare uno sprite che può essere trascinato sullo schermo usando questo.

Quindi quello che voglio fare è quando l'utente tocca un punto qualsiasi dello schermo per far saltare lo sprite.

o spostati in alto e poi in basso.

Qual è il modo migliore per eseguire questa operazione con andengine?

È stato utile?

Soluzione

Dovrebbe funzionare:

@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;
}

Tieni presente che, se lo userai, ogni volta che si verifica un evento ACTION_DOWN, potresti perdere altri gestori di eventi per questo (ad esempio, se hai pulsanti sullo schermo, non gestiranno mai l'evento).

Il modo per gestirlo è usare aggiungi qualsiasi altra entità che desideri ricevere eventi di tocco come aree di tocco per la tua scena, Scene.registerTouchArea(ITouchArea) lo fa.Sprites e AnimatedSprites implementano ITouchArea, quindi puoi usarli.

Quando un Scene riceve un TouchEvent da gestire, prima consentirà a tutti i ITouchArea registrati di gestirlo, quindi se nessuno di loro lo ha consumato, proverà il metodo onSceneTouchEvenet.

Altri suggerimenti

Sembra che dovresti impostare un listener mostrato come in questo tutorial: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html quindi forse utilizza un modificatore di spostamento come mostrato in questo post: come spostare l'oggetto sprite utilizzando AndEngine (Android) Spero che risolverai il tuo problema.;)

Buona fortuna - Lijap

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top