Sprite-Sprung machen, wenn Benutzer auf den Bildschirm tippen?
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?
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 Sprite
s 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 TouchEvent
s 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