提问人:Arrow Assassin 提问时间:4/4/2023 更新时间:4/4/2023 访问量:99
在 Python 中获取相对鼠标输入/移动,例如
obtain relative mouse input/movements in Python such
问:
我正在尝试在全屏游戏中跟踪我的鼠标移动,这样我就可以在射击时进行这种移动并基本上绘制我的后坐力控制模式。我已经弄清楚了我需要为代码的可视化方面做些什么,但我似乎无法通过直接鼠标输入获得准确的输出。
这是我使用的代码:
import winput, time, math
def mouse_callback( event ):
if event.action == winput.WM_LBUTTONDOWN: # prints the L-mouse-button position when pressed
global pressed_time
pressed_time=event.time
print("[LMB] pressed at {}".format( event.position ))
if event.action == winput.WM_LBUTTONUP: # prints the R-mouse-button position when pressed
print("[LMB] released at {}".format( event.position ))
if event.action == winput.WM_LBUTTONUP: # prints the time in MS the L-mouse-button was released from when it was initially pressed
released_time = event.time
final_time = (released_time-pressed_time)
#print("[LMB] released {}ms later.".format( final_time))
print("---")
def keyboard_callback( event ):
if event.vkCode == winput.VK_ESCAPE: # quit on pressing escape
winput.stop()
# if event.action == winput.WM_KEYDOWN: # prints pre-defined keys when pressed
# if event.vkCode == 87:
# print("W")
# if event.vkCode == 65:
# print("A")
# if event.vkCode == 83:
# print("S")
# if event.vkCode == 68:
# print("D")
# print(event.vkCode)
print("Press escape to quit")
# hook input
winput.hook_mouse( mouse_callback )
winput.hook_keyboard( keyboard_callback )
# enter message loop
try:
while 1:
#time.sleep(1./150)
msg = (winput.get_message())
if msg:
break
except KeyboardInterrupt:
pass
# remove input hook
winput.unhook_mouse()
winput.unhook_keyboard()
这是我尝试过的代码,它适用于任何您只需移动光标的游戏,但由于 FPS 和其他全屏游戏使用将光标锁定在屏幕中心,因此使用平滑公式进行简单的坐标绘制将不起作用。我被难住了,到目前为止,我看过的所有库都专注于输出鼠标移动而不是测量输入,目前尚不清楚它们是否可以以这种方式使用。我仍在尝试一些想法,我认为我可能已经取得了一点进步,但任何建议将不胜感激。
如果游戏将鼠标锁定在某个位置,如何记录鼠标移动?
答: 暂无答案
评论