Syntax 自动热键:一个命令的多个/或有使用

Syntax 自动热键:一个命令的多个/或有使用,syntax,automation,autohotkey,Syntax,Automation,Autohotkey,我正在进行一个游戏设计/UI项目,重新设计现有游戏的控制方案(在本例中为Trine),以使用最低限度的输入。我试图将横向移动和跳跃功能映射到Win8平板电脑的音量按钮。以下是我使用的基本代码: Volume_Up:: Loop 5 { Send {right down} Sleep 50 } Send {right up} Return Volume_Down:: Loop 5 { Send {left down} Sleep 50 } Send {left up} Retur

我正在进行一个游戏设计/UI项目,重新设计现有游戏的控制方案(在本例中为Trine),以使用最低限度的输入。我试图将横向移动和跳跃功能映射到Win8平板电脑的音量按钮。以下是我使用的基本代码:

Volume_Up::
Loop 5
{
  Send {right down}
  Sleep 50
}
Send {right up}
Return

Volume_Down::
Loop 5
{
  Send {left down}
  Sleep 50
}
Send {left up}
Return
这是相当好的工作,是相当灵敏的左右移动。然而,我想要的行为是在按下两个按钮时触发跳转(即向上)。例如:

  • 游戏者握住音量向右移动
  • 玩家遇到障碍物
  • 玩家继续持有VolumeUp以排队右行移动
  • 玩家轻拍音量下降瞬间
  • 玩家跳跃,继续向上移动,越过障碍物向右移动

我尝试过使用另一个带有(Volume\u Up&Volume\u Down::)语法的脚本来触发此交互的各种排列,但这似乎总是会干扰移动命令。我认为这可能需要在move left/move right命令中使用嵌套的If语句来检查两个按钮是否都被按下,但是Autohotkey文档不是很清楚,我不确定如何编写代码(我更像是一个游戏设计师,而不是一个程序员)。任何帮助都将不胜感激

首先,请注意MCL的评论。按下一个按钮5次,中间不要松开,这似乎没什么作用

我认为您希望多个线程能够同时运行。 查找线程,但要注意以下事项:


“尽管AutoHotkey实际上并不使用多个线程,但它模拟了其中的一些行为:如果启动了第二个线程,例如在前一个线程仍在运行时按另一个热键,则当前线程将被中断(暂时停止)允许新线程成为当前线程。如果第三个线程在第二个线程仍在运行时启动,则第二个线程和第一个线程都将处于休眠状态,依此类推。“

为什么连续发送{RIGHT down}五次而不释放它?至少在理论上,按下已经按下的键似乎不合逻辑。不管怎样,你看了吗?在每次循环运行中,您可以检查是否按下了
VolumeDown
if(GetKeyState(“Volume\u Down”,“P”))…