Frage

Ich verwende andengine, um ein Sprite zu implementieren, das damit über den Bildschirm gezogen werden kann.

Ich möchte also, wenn der Benutzer auf eine beliebige Stelle auf dem Bildschirm tippt, um das Sprite zu springen.

oder nach oben und dann nach unten.

Was ist der beste Weg, dies mit andengine zu tun?

War es hilfreich?

Lösung

Dies sollte funktionieren:

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

Denken Sie daran, dass Sie bei Verwendung eines ACTION_DOWN-Ereignisses möglicherweise einige andere Ereignishandler dafür verpassen (wenn Sie beispielsweise Schaltflächen auf dem Bildschirm haben, werden diese das Ereignis niemals behandeln).

Um damit umzugehen, fügen Sie alle anderen Entitäten hinzu, die Berührungsereignisse als Berührungsbereiche für Ihre Szene empfangen möchten.Scene.registerTouchArea(ITouchArea)s und Sprites implementieren AnimatedSprite, sodass Sie diese verwenden können.

Wenn ein ITouchArea einen zu verarbeitenden Scene erhält, lässt er zuerst alle von Ihnen registrierten TouchEvents damit umgehen. Wenn keiner von ihnen ihn verbraucht, versucht er die ITouchArea-Methode.

Andere Tipps

Es sieht so aus, als müssten Sie einen Listener einrichten, der zeigt, wie in diesem Tutorial gezeigt wird: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html Verwenden Sie dann möglicherweise einen Verschiebungsmodifikator, wie in diesem Beitrag gezeigt: Verschieben von Sprite-Objekten mit AndEngine (Android) Ich hoffe, dass Sie Ihr Problem herausfinden.;)

Viel Glück - Lijap

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top