java - 如何通过拖动鼠标/手指来移动身体/演员?
问题描述
我目前正在使用 libgdx 用 Java 开发 Air Hockey 游戏。
游戏的重点是根据平台使用触摸或鼠标移动手柄,并用它来触摸冰球以使其四处移动。
我四处寻找,但找不到合适的解决方案。我知道有手势监听器、、、、等touchDragged
方法...setTransform
applyForce
现在,为了测试它,我正在使用setLinearVelocity
,身体获得鼠标点击的速度。这样,当手柄接触冰球时,它会完全按照我的意愿工作,接触侦听器会工作,冰球会朝正确的方向移动,但显然我不希望这种方法将运动应用于手柄。
那么如何使用触摸来移动它并确保手柄击中冰球呢?
解决方案
您可以使用 设置身体位置setTransform
。为了用鼠标/手指移动它,您可以实现touchDragged
的方法InputAdapter
,如下所示:
Gdx.input.setInputProcessor(new InputAdapter() {
public boolean touchDragged(int screenX, int screenY, int pointer) {
body.setTransform(screenX, Gdx.graphics.getHeight() - screenY, 0);
return true;
}
});
另外我认为你应该将你的棍子定义为运动体:
像静态物体一样,它们不会对力做出反应,但像动态物体一样,它们确实具有移动的能力。运动学物体非常适合程序员想要完全控制物体运动的东西,例如平台游戏中的移动平台。
出于好奇,我自己做了一个测试。棒是运动体,球是动态的。如您所见,棍子不受任何力的影响:
推荐阅读
- django - 允许用户删除但保留对他们的引用
- linux - Ubuntu 上的 Docker 无法连接到 localhost 但可以连接到它的 ip
- c# - 你调用的对象是空的?(异常错误~ASP.NET MVC)
- javascript - 代码在本地主机上运行良好,但在托管主机提供商上运行良好 - 在互联网上搜索了 3 天,到目前为止许多尝试都是徒劳的
- c# - 在 EventHandler 中调用 this.StateHasChanged
- php - MySQL 更新查询使用等于 (=) 和 LIKE 与字母数字标准值
- c# - 如何从文件中获取缩略图
- javascript - 如何使用 reactJS 根据下拉选择更改表单字段
- tensorflow - tf.distribute.experimental.MultiWorkerMirroredStrategy() 无法正常工作
- flutter - 如何在 ListTile 中显示每个值映射?