LibGDX - 如何控制多次跳跃的触摸事件
LibGDX - How to control touch events for Jumping multiple times
我正在使用 LibGDX 开发一款游戏,我正在尝试找出如何限制跳跃的 TouchEvent。
我的尝试:
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限制为两次。
你有什么想法吗?
谢谢。
方案一(限制每秒跳数):
因此,您的角色会在触碰事件发生时跳跃。您定义一个变量来存储最后一次敲击(以毫秒为单位):
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 中的 1000 毫秒)。只需用数字进行测试(500 将我们每秒点击 2 次,250 - 4,等等)。
方案二(限制跳跃次数):
您定义一个变量来存储执行跳跃的次数和最大跳跃次数:
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;
当 body 下降时,您在 render() 方法或角色的 box2d 交互侦听器中重置跳跃变量:
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,用户就可以跳跃。
我正在使用 LibGDX 开发一款游戏,我正在尝试找出如何限制跳跃的 TouchEvent。
我的尝试:
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限制为两次。
你有什么想法吗?
谢谢。
方案一(限制每秒跳数):
因此,您的角色会在触碰事件发生时跳跃。您定义一个变量来存储最后一次敲击(以毫秒为单位):
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 中的 1000 毫秒)。只需用数字进行测试(500 将我们每秒点击 2 次,250 - 4,等等)。
方案二(限制跳跃次数):
您定义一个变量来存储执行跳跃的次数和最大跳跃次数:
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;
当 body 下降时,您在 render() 方法或角色的 box2d 交互侦听器中重置跳跃变量:
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,用户就可以跳跃。