[英]how to perform In-game mouse movements for FPS games using java (or maybe writing drivers for the task?)
我的服务将使用户能够使用他们的 android 设备玩 PC 游戏,方法是将正在运行的游戏实例从他们的 PC 流式传输到移动设备。 这涉及能够 stream 并使用 android 控制电脑。我正在尝试创建两个单独的应用程序 -
现在我知道你们中的一些人会说java.awt.robot
可能只是工作(正如我在其他 stackoverflow 问题中发现的那样)。 所以,我将在下面留下两段代码,您可以看到它们在游戏中的作用以及它们不可用的原因。
val robot = Robot()
fun main(args: Array<String>) {
Thread.sleep(10000)
for (i in 0..200) {
Thread.sleep(20)
testMouseDelta(100, 0)//moves mouse to right by 100px
}
}
fun testMouseDelta(dx: Int, dy: Int) {
robot.mouseMove(
MouseInfo.getPointerInfo().location.x + dx,
MouseInfo.getPointerInfo().location.y + dy
)
}
游戏就好像它已经到达屏幕的右边缘并且不再向右旋转。(它应该保持旋转 20ms * 200 = 4000ms)
val robot = Robot()
fun main(args: Array<String>) {
Thread.sleep(10000)
for (i in 0..10000 step 50) {
Thread.sleep(20)
robot.mouseMove(
i,
MouseInfo.getPointerInfo().location.y
)//moves mouse to right by 50px
}
}
我发现游戏有点自我循环。 您可能会在 gif 的末尾注意到它。 旋转故障到一个完全不同的角度。
到目前为止,我一直在使用java.awt.robot
来执行我的所有操作并且它工作正常,直到我意识到它不能用于游戏中的鼠标控制。 我环顾了多个地方大约一个星期,只是为了找到一个可以正常工作的简单代码(没有找到)。 我发现我可能需要让游戏感觉好像直接从硬件鼠标接收数据,这是因为游戏与鼠标控件的交互方式不同,仅使用上述库不是解决方案。 所以,现在我想我只有两个选择。
我不知道如何使用这两个选项中的任何一个。 我不知道驱动程序编码。 任何帮助深表感谢。 谢谢你。
我认为原因是您继续向右移动指针,即使到达边缘也是如此。 我有 2 个想法,这可能会有所帮助。
x
坐标等于屏幕宽度),释放所有按钮(如果有点击),将指针向左移动最大值,点击所有之前的按钮(如果有),继续循环。mobileScreen = 500px
mobileMovement = 50px
percent = 10%
pcScreen = 2000px
pcMovement = 2000px * 10% = 200px
Tbh,我不确定两者都能解决问题,但我认为值得一试。 您可以像这样获得屏幕尺寸:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.