Это должно работать:
@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;
}
Имейте в виду, что, если вы будете использовать это, когда есть ACTION_DOWN
событие, вы можете пропустить некоторые другие обработчики событий для этого (например, если у вас есть экранные кнопки, они никогда не будут обрабатывать событие).
Способ использования заключается в использовании любых других объектов, которые вы хотите получать событиями касания в качестве областей касания для вашей сцены, Scene.registerTouchArea(ITouchArea)
делает это. Sprite
s и AnimatedSprite
s реализация ITouchArea
, поэтому вы можете использовать их.
Когда Scene
получает TouchEvent
обрабатывать, он сначала пусть все ITouchArea
с вы зарегистрированный дескриптор его, а затем, если не из них потребляли его, он будет попробовать метод onSceneTouchEvenet
.
Спасибо, но im фактически уже делает это для спрайта, но теперь я хочу, чтобы он «прыгал» в любое время, когда пользователь забирает экран, не касаясь спрайта. –
Извините, у меня есть довольно ограниченная информация о andengine, я считаю, что ответа Jong будет достаточно. – Lijap