我想创建一个移动应用程序,允许两个玩家在同一设备上打乒乓球.每个玩家都将抓住设备的一端,并能够在y轴上前后移动守门员.我正在使用带有w / libGDX的Java开发游戏,但无法获得多个输入才能正常工作.我可以这样做,以便平台记录输入是从左侧还是从右侧输入(确定哪个玩家正在移动),并且我可以使用它来分别移动每个玩家,但是我不能让他们在同时.
这是我目前的运动方式:
PlayerPaddle playerOnePaddle = ((GameScreen) currentScreen).getPlayerOnePaddle(); PlayerPaddle playerTwoPaddle = ((GameScreen) currentScreen).getPlayerTwoPaddle(); Vector2 touchPos = new Vector2(Gdx.input.getX(), Gdx.input.getY() + playerOnePaddle.height / 2); if (Gdx.input.getX() < Gdx.graphics.getWIDth() / 2) { playerOnePaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y; } if (Gdx.input.getX() > Gdx.graphics.getWIDth() / 2) { playerTwoPaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y; }
这适用于单独的输入,这意味着我可以点击屏幕的左侧并移动左播放器,我可以点击屏幕的右侧并移动右播放器,但是我不能同时移动每个播放器,会打败游戏的重点.我需要具体的示例来实现这一点,因为我对libGDX输入的经验非常有限,经过四处搜寻之后,我找不到任何正确的方法来执行此 *** 作.我考虑过对第二个输入进行多线程处理,但这只会使代码混乱,并使逻辑不对称
解决方法:
屏幕上的每一次触摸都给出一个int指针.第一次触摸将获得指针0,第二次触摸将获得指针1.如果您让该触摸发生,则释放指针,并将其提供给下一次触摸(它将始终获取第一个空闲指针).我建议您检查一下前5个指针,以确保:
for (int i=0; i<5; i++){ if (!Gdx.input.istouched(i)) continue; Vector2 touchPos = new Vector2(Gdx.input.getX(i), Gdx.input.getY(i) + playerOnePaddle.height / 2); if (Gdx.input.getX(i) < Gdx.graphics.getWIDth() / 2){ playerOnePaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y; } if (Gdx.input.getX(i) > Gdx.graphics.getWIDth() / 2){ playerTwoPaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y; }}
顺便说一句,您应该使用相机并取消触摸的投射:
camera.unproject(touchPos.set(Gdx.input.getX(i), Gdx.input.getY(i), 0));
然后将touchPos.x和touchPos.y用作触摸.这样,它将在每种屏幕分辨率下都相同.
总结以上是内存溢出为你收集整理的java-具有多个触摸输入的LIbGDX多人乒乓球全部内容,希望文章能够帮你解决java-具有多个触摸输入的LIbGDX多人乒乓球所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)