Fazendo um sprite pular quando o usuário toca na tela?
Pergunta
Estou usando o andengine para implementar um sprite que pode ser arrastado pela tela usando isso.
Então, o que eu quero fazer é quando o usuário tocar em qualquer lugar da tela para fazer o sprite pular.
ou mova para cima e depois mova para baixo.
Qual é a melhor maneira de fazer isso com o andengine?
Solução
Isso deve funcionar:
@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;
}
Lembre-se de que, se você usar isso, sempre que houver um evento ACTION_DOWN
, você poderá perder alguns outros manipuladores de eventos para isso (por exemplo, se você tiver botões na tela, eles nunca manipularão o evento).
A maneira de lidar com isso é adicionar quaisquer outras entidades que você deseja receber eventos de toque como áreas de toque para sua cena, Scene.registerTouchArea(ITouchArea)
faz isso.Sprite
s e AnimatedSprite
s implementam ITouchArea
, para que você possa usá-los.
Quando um Scene
recebe um TouchEvent
para manipular, ele primeiro permite que todos os ITouchArea
s que você registrou o manipulem, então se nenhum deles o consumiu, ele tentará o método onSceneTouchEvenet
.
Outras dicas
Parece que você teria que configurar um ouvinte mostrado como neste tutorial: http://www.andengine.org/forums/tutorials/updating-sprites-objects-listeners-t386.html então talvez use um modificador de movimento conforme mostrado nesta postagem: como mover um objeto sprite usando AndEngine (Android) Espero que você resolva seu problema.;)
Boa sorte- Lijap