Использование PathModifier или MoveYModifier для имитации прыжка спрайта

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

  •  27-10-2019
  •  | 
  •  

Вопрос

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

родовое слово

Я хочу, чтобы при нажатии на сцену игрок мог прыгать.

Теперь две вещи: было бы лучше использовать PathModifier или MoveYModifier, учитывая, что это альбомный режим? Если так, пожалуйста, приведите такой пример. Спасибо

РЕДАКТИРОВАТЬ:

ive удалось использовать физику для имитации прыжка с помощью этого ..

родовое слово

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

Это было полезно?

Решение

Используйте общий кодовый код. помните, что вы можете зарегистрировать столько модификаторов, сколько захотите. Так, если, например, игра представляет собой платформер, и персонаж всегда движется по оси X, и он может прыгать, если хочет (например, Gravity Guy или Yoo Ninja, хотя в этих играх гравитация меняется, что является чем-то еще).

Вы могли бы:

родовое слово

< sizesEDIT:

По второму вопросу:

  1. Создайте переменный MoveYModifier в вашей сцене; Когда начнется скачок - установите его на boolean mIsJumping. Если пользователь коснется экрана и сгенерирует код тега, не прыгать.
  2. Теперь зарегистрируйте ContactListener в свой кодовый код. При каждом контакте между игроком и землей установите для true значение mIsJumping == true.

На форумах AndEngine есть множество примеров использования генерируемых кодов тегов: быстрый поиск дает некоторые результаты. Если вам нужен пример, вы можете попросить его :)

ИЗМЕНИТЬ 2: образец кода сгенерированного тега:

  1. Есть две переменные для хранения идентификаторов игрока и земли: PhysicsWorld.
  2. При создании тела земли и тела игрока установите их идентификаторы в качестве пользовательских данных: mIsJumping и false.
  3. Создайте общий кодовый тег в качестве поля в вашей сцене:

    Entity playerEntity = ..//It doesn't matter if the player is a sprite, animated sprite, or anything else. So I'll just use Entity here, but you can declare your player as you wish.
    
    final float jumpDuration = 2;
    final float startX = playerEntity.getX();
    final float jumpHeight = 100;
    
    final MoveYModifier moveUpModifier = new MoveYModifier(jumpDuration / 2, startX, startX + jumpHeight);
    final MoveYModifier moveDownModifier = new MoveYModifier(jumpDuration / 2, startX + jumpHeight, startX);
    final SequenceEntityModifier modifier = new SequenceEntityModifier(moveUpModifier, moveDownModifier);
    
    playerEntity.registerEntityModifier(modifier);
    
  4. Наконец, зарегистрируйте этого контактного слушателя: ContactListener

РЕДАКТИРОВАТЬ 3:

Чтобы переместить спрайт по оси X, вы можете применить силу, используя метод ContactListener, или применить импульс, используя метод private static final String PLAYER_ID = "player", GROUND_ID = "ground";. Поиграйте с аргументами и найдите, что работает дальше.

Вектор должен состоять только из X части; Попробуйте создать код. Затем примените силу следующим образом: playerBody.setUserData(PLAYER_ID);.

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