我找到了通过DirectInput模拟鼠标移动的解决方案。重点是使用python脚本在3D游戏中导航角色。这意味着必须使用相对鼠标移动。
一切正常,但是当我尝试在游戏中计算 x单位之间的关系<(在MouseMoveTo函数中)和角度字符时,我发现 aritmetics确实不能工作。
例如:
当我移动鼠标 2 x 200单位左然后 1 x 400单位右字符不看同一方向(如果在桌面上,光标不在同一位置)< / p>
2x200&lt; 1x400
如果我尝试动画动画(例如将动作分为50步),情况会更糟。
我做错了什么或者这是正常行为?如果它是正常行为,有什么方法可以计算出正确的单位传递给MouseMove To()吗?
((a*b)/c^2) * c
答案 0 :(得分:0)
好吧...问题是Windows的“增强指针精度”设置,总之,它使小(慢)鼠标移动得更小而大(快)鼠标移动得更大……
将其关闭后,一切正常。
有关此窗口的更多信息,请点击此处https://www.howtogeek.com/321763/what-is-enhance-pointer-precision-in-windows/
答案 1 :(得分:0)
只需运行以下代码...
def MouseMoveTo(x, y):
x = 1 + int(x * 65536./1920.)#1920 width of your desktop
y = 1 + int(y * 65536./1080.)#1080 height of your desktop
extra = ctypes.c_ulong(0)
ii_ = Input_I()
ii_.mi = MouseInput(x,y,0, (0x0001 | 0x8000), 0, ctypes.pointer(extra) )
x = Input( ctypes.c_ulong(0), ii_ )
SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))