【发布时间】:2017-07-10 20:09:46
【问题描述】:
我正在开发一款 2D 太空射击游戏,玩家只能左右移动。我在屏幕的左侧和右侧渲染了一个按钮,并不断检查它是否被触摸。这样做的问题是您必须抬起按钮的手指才能按下屏幕另一侧的按钮。我希望飞船朝着屏幕最后触摸的部分移动(即使您实际上没有抬起第一次触摸按钮的手指)。
public void keyListener(float delta){
//right movement
if(Gdx.input.isKeyPressed(Keys.RIGHT) || (Gdx.input.isTouched() && game.cam.getInputInGameWorld().x >= arrowMoveX - 40) && !isPlayerHit)
x+=SPEED*Gdx.graphics.getDeltaTime();
//left movement
if(Gdx.input.isKeyPressed(Keys.LEFT) || (Gdx.input.isTouched() && game.cam.getInputInGameWorld().x < arrowMoveWhite.getWidth() + 40) && !isPlayerHit)
x-=SPEED*Gdx.graphics.getDeltaTime();
我尝试在其中添加另一个 if 语句来检查第二个动作,但这种方式只能在一个方向上起作用。 你能帮帮我吗?
【问题讨论】:
-
创建一个“lastTouchedDirection”整数或布尔标志。按下其中一个按钮时更新标志。更新位置时,检查此标志以确定它应该移动的方向。您可能需要提取运动语句的一些条件。
-
这是我尝试的第一件事,但它不是那样工作的。它不断检查您正在按下哪个按钮,因此假设您将此标志设置为 1 如果触摸右侧按钮,则设置为 0 如果触摸左侧按钮。当您按住右键时,它会不断将标志设置为 1,因此,如果您按下左键,它会将其设置为 0,但同时右键的条件为真,因此标志再次设置为 1。一个糟糕的解释,我知道,但是...:D
-
我认为我必须同时检查两个按钮是否都被按下(未触摸),我不知道该怎么做。
-
如果右,否则如果左,否则如果右和左