Делать спрайт прыжок, когда пользователь нажимает на экран? - PullRequest
4 голосов
/ 12 января 2012

Я использую andengine для реализации спрайта, который можно перетаскивать по экрану с помощью этого.

То, что я хочу сделать, - это когда пользователь нажимает в любом месте на экране, чтобы спрайт прыгнул.

или двигайтесь вверх, а затем двигайтесь вниз.

Как лучше всего делать это с андегином?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Это должно работать:

@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.

1 голос
/ 12 января 2012

Похоже, вам нужно настроить слушателя, как показано в этом уроке: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html, а затем, возможно, использовать модификатор перемещения, как показано в этом посте: как переместить объект спрайта с помощью AndEngine (Android) Я надеюсь, что вы поймете свою проблему. ;)

Удачи - Lijap

...