Заставляющий спрайт прыгать, когда пользователь нажимает на экран?

StackOverflow https://stackoverflow.com/questions/8829015

  •  27-10-2019
  •  | 
  •  

Вопрос

Я использую 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) Надеюсь, вы разберетесь со своей проблемой.;)

Удачи, Лиджап

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top