Fare un salto di sprite quando l'utente tocca lo schermo?
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?
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.Sprite
s e AnimatedSprite
s 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