Java LibGDX游戏:检查触地时按钮是否被触碰
我目前正在为Android设备制作一款libGDX游戏。我想有一个方法,当触地被调用时调用函数,而不是当按钮被点击时。这是因为我正在为炮塔设置目标,单击按钮时炮塔不应旋转 我现在掌握的密码是Java LibGDX游戏:检查触地时按钮是否被触碰,java,android,button,touch,libgdx,Java,Android,Button,Touch,Libgdx,我目前正在为Android设备制作一款libGDX游戏。我想有一个方法,当触地被调用时调用函数,而不是当按钮被点击时。这是因为我正在为炮塔设置目标,单击按钮时炮塔不应旋转 我现在掌握的密码是 @Override public boolean touchDown(int screenX, int screenY, int pointer, int button) { if (state != STATE.GAMEOVERLOST && state != STATE.PAUS
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
if (state != STATE.GAMEOVERLOST && state != STATE.PAUSED
&& state != STATE.EXITMENU && !slowButton.isOver()
&& !pauseButton.isPressed())
turret.setTargetAngle(screenX, screenY);
return true;
}
这将重写我的类实现的InputProcessor类中的函数
此代码适用于:
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
if (state != STATE.GAMEOVERLOST && state != STATE.PAUSED
&& state != STATE.EXITMENU && !slowButton.isPressed()
&& !pauseButton.isPressed())
turret.setTargetAngle(screenX, screenY);
return true;
}
touchDrawed可以工作,但touchDown并不表示按钮在第一次执行后才被标记为“按下”
我也尝试过使用Button.isOver()代替Button.isPressed(),但这仍然没有达到预期效果
有人有什么建议吗?你可以用这个方法
按按钮。它在提供的坐标处找到最深的参与者。您应该从stage调用它,如果它返回pauseButton,那么pauseButton被单击。如果它返回的内容不是slowButton或null,则它没有被单击。更多关于命中检测的信息
所以你可以这样做:
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
if (state != STATE.GAMEOVERLOST && state != STATE.PAUSED
&& state != STATE.EXITMENU && !slowButton.isOver()
&& !stage.hit(screenX, screenY, true).equals(pauseButton))
turret.setTargetAngle(screenX, screenY);
return true;
}
但是,您可能需要将屏幕坐标转换为舞台坐标,具体取决于您的坐标系设置。我刚刚检查了该舞台。hit(screenX,screenY,true)=null有效,因为按钮是舞台上唯一的演员。谢谢你给我指明了正确的方向!