【发布时间】:2020-07-15 17:58:10
【问题描述】:
我正在尝试模拟 FPS 游戏中的鼠标移动,更具体地说是 Valorant。我知道
SetCursorPos() 函数和 mouse_event() 函数都可以很好地改变光标的位置。这适用于使用不断居中光标技术的 FPS 游戏,但 Valorant 似乎没有这样做。我编写了一个程序来不断检查我的光标位置(使用GetCursorPos())并且我的光标永远不会居中,如果我将鼠标移动到一个角落然后继续移动它,我的角色会一直旋转。那么,Valorant 如何在光标位置不变的情况下感知我正在移动鼠标,以及如何在 Valorant 中对此进行反击并模拟鼠标移动?
顺便说一句,别担心 - 我不是想作弊,只是想在 freecam 中为电影镜头做出流畅的动作。
【问题讨论】:
-
仅供参考,
mouse_event()已弃用,请改用SendInput()。但是您可能仍然会遇到同样的问题。我不知道 Valorant 是如何跟踪鼠标移动的。也许它只是看到鼠标移动到无法再移动的角落,并假设您想继续朝那个方向“移动”,直到鼠标移出角落? -
当我的光标位置没有改变时,Valorant 如何感知我正在移动鼠标 我不确定 Valorant 是如何实现的, 但是你可以使用
RegisterRawInputDevices和usUsage = 0x02(鼠标), 这里有一个sample (你需要将usUsage改为0x02)来使用它。 -
@DrakeWu-MSFT 有趣!看了一点,但找不到太多关于
RegisterRawInputDevices的信息,我将如何注册一个新的输入设备,然后“控制”那个输入设备? -
RegisterRawInputDevices可用于检测您描述的鼠标移动。对于“控制”,您可以使用SendInput与相对坐标进行模拟。