解决方案1(限制每秒跳跃):
所以,你的角色跳跃上的触下事件。你定义一个变量来存储以毫秒为单位的最后两次:
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;
这应该打电话给你跳跃的代码只有每秒一次(因为如果在1000毫秒)不管你点击多快。只需测试一下数字(我们每秒钟抽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()方法或box2d交互侦听器中的跳转var时E身体落在:
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跳。
你好雅森,谢谢你的回答。只是回复我注意到它,并会在今天晚些时候对它进行测试 - 目前我在办公室。一旦测试就会接受你的答案! –
我使用了maxJumps选项,它适用于我。我将它设置为2,这是我想达到的。回答已接受并已提交。谢谢@Yasen! –