我正在开发一种虚拟现实设置,需要使用名为Platinum Arts Sandbox的3D游戏设计软件。从本质上讲,目标是让玩家能够在关闭鼠标时移动并使用鼠标光标向前移动(改变Y值)。
鼠标X位置的变化不利于环境呈现给玩家的方式(非向前运动,扭曲玩家可以看到的内容),因此必须加以控制。我已经设计了一些控制机芯的光学鼠标的物理限制,但需要通过软件设置一个精细的控制来完美控制运动。
以下autohotkey脚本(不是我自己的,来自Leef_me,我认为,甚至是SKAN)似乎很有希望并且在Windows资源管理器中很好地控制X轴(将其锁定到位)并且仅允许移动Y-轴(当我点击 F1 时)。当我点击 J
时,它会锁定Y轴F1:: Confine := !Confine
ClipCursor( Confine, A_ScreenWidth/2, 0, A_ScreenWidth/2, A_ScreenHeight )
Return
J::
Confine := !Confine
ClipCursor( Confine, 0, A_ScreenHeight//2, A_ScreenWidth, A_ScreenHeight//2 )
Return
ClipCursor( Confine=True, x1=0 , y1=0, x2=1, y2=1 )
{
VarSetCapacity(R,16,0), NumPut(x1,&R+0),NumPut(y1,&R+4),NumPut(x2,&R+8),NumPut(y2,&R+12)
Return Confine ? DllCall( "ClipCursor", UInt,&R ) : DllCall( "ClipCursor" )
}
然而,当在Platinum arts中执行时,命令被翻转,现在点击 J 将允许鼠标在鼠标锁关闭时向前移动(我想我应该将其视为不是“锁定”Y轴,而是允许它通过Y轴上的点移动?)。没什么大不了的,但是现在光标移动时也会有巨大的性能损失。它与Varsetcapacity有关吗?
我真的迷失了,所以如果有人能指出我正确的方向,那真的很酷。