Заставляющий спрайт прыгать, когда пользователь нажимает на экран?
Вопрос
Я использую andengine для реализации спрайта, который можно перетаскивать по экрану, используя это.
Итак, что я хочу сделать, так это когда пользователь нажимает на любое место на экране, заставить спрайт прыгать.
или двигаться вверх, а затем двигаться вниз.
Каков наилучший способ сделать это с помощью andengine?
Решение
Это должно сработать:
@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
в противном случае вы можете пропустить некоторые другие обработчики событий для этого (например, если у вас есть экранные кнопки, они никогда не будут обрабатывать событие).
Способ справиться с этим - использовать add любые другие объекты, которые вы хотите получать от событий касания в качестве областей касания для вашей сцены, Scene.registerTouchArea(ITouchArea)
делает это. Sprite
ы и AnimatedSprite
ы осуществлять ITouchArea
, так что вы можете ими воспользоваться.
Когда a Scene
получает TouchEvent
чтобы справиться, он сначала позволит всем ITouchArea
если вы зарегистрировали обработку этого, то, если ни один из них его не использовал, он попытается onSceneTouchEvenet
способ.
Другие советы
Похоже, вам потребуется настроить прослушиватель, как показано в этом руководстве: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html , а затем, возможно, используйте модификатор перемещения, как показано в этом сообщении: как переместить объект спрайта с помощью AndEngine (Android) Надеюсь, вы разберетесь со своей проблемой.;)
Удачи, Лиджап