LibGDX - 如何控制多次跳跃的触摸事件

时间:2016-03-08 01:39:26

标签: java android libgdx touch

我正在与LibGDX合作开发游戏,我正试图弄清楚如何限制TouchEvent跳跃。

MY ATTEMPT:

if(player.b2body.getLinearVelocity().y > 3.5f){
            float currentVelocityY = player.b2body.getLinearVelocity().y;
            player.b2body.applyLinearImpulse(new Vector2(0, (- currentVelocityY)), player.b2body.getWorldCenter(), true);
    }

如果超过某个值,我正考虑降低Y轴上的速度。但这不起作用,好像我一直触摸屏幕,角色会飞得更高。

我想限制touchEvent在短时间内跳转两次。

你的任何想法?

感谢。

1 个答案:

答案 0 :(得分:5)

解决方案1(限制每秒的跳跃次数):

所以,你的角色会跳上touchDown事件。您可以定义一个变量来存储最后一次点击,以毫秒为单位:

long lastTap = System.currentTimeMillis();

点击活动:

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
  if(System.currentTimeMillis() - lastTap < 1000) 
    return true;

  // your character jump code

  lastTap = System.currentTimeMillis();
  return true;

这应该每秒只调用一次你的跳转代码(因为if中的1000ms),无论你多快点击。只需测试数字(500我们每秒2次点击,250 - 4等)。

解决方案2(限制跳数):

您可以定义一个变量来存储执行跳转的次数和最大跳跃次数:

int jumps = 0;
int maxJumps = 3;

点击活动:

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
  // the limit is reached
  if(jumps == maxJumps) 
    return true;

  // your character jump code

  jumps++;
  return true;

当你的身体掉落时,重置你的render()方法或你角色的bo​​x2d交互监听器中的jumps var:

if(player.b2body.getLinearVelocity().y == 0)
    jumps = 0;

现在用户将能够进行3次快速跳跃,然后他将不得不等待角落掉在地上再次跳跃。

解决方案3(检查点击力)

public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
  if(player.b2body.getLinearVelocity().y > 3.5f) 
    return true;

    // your character jump code

    return true;
}

现在,只要y速度低于3.5f,用户就能跳转。