我最近从 GOG.com 购买了 Rayman 2。这款游戏比较老,因此没有提供重新映射按键的选项,我想让它们更接近我们今天习惯的按键。
基本上,我希望使用 WSAD 进行正常移动,使用空格进行跳跃,使用鼠标左键单击进行射击。此外,我希望仅在 Rayman 窗口处于活动状态时重新映射按键。我创建了以下脚本,但它无法正常工作。
这是我第一次使用 AHK,所以我不知道该怎么做。如何正确配置脚本?
当这个脚本激活时会发生以下情况:
- 无论 Rayman 是否打开,脚本都是活动的,更不用说窗口是否处于活动状态。(窗口名称可以是
Rayman II
或Rayman2
。) - W:向前移动并将镜头转向右侧
- S:按预期工作
- A:向左移动并跳跃
- D:按预期工作
- LButton:按预期工作
- 空格:射击和跳跃
脚本本身:
IfWinActive, Rayman2
{
w::up
s::down
a::left
d::right
space::a
LButton::space
}
答案1
- 首先,您使用了错误的命令。使用
#IfWinActive
。这适用于整个脚本。您选择的命令检查脚本中的窗口是否处于活动状态。 - 然后,使用 WindowSpy 检查窗口的 ahk_class 是什么(如果窗口标题发生变化,这很有用)。WindowSpy 包含在 AutoHotkey 安装中。
- 最后,尝试不同的发送模式。有些细节有所不同。有关不同发送命令的更多信息,请参阅这里。
您的代码将如下所示:
#IfWinActive, ahk_class xyz ; put your ahk_class instead of xyz
SendMode Play ; try all of the following: Input|Play|Event|InputThenPlay
w::up
s::down
a::left
d::right
space::a
LButton::space
资格:根据您使用的 Windows 版本,模拟按键可能有效,也可能无效。在 Windows 7 上有效的方法可能在 Windows 8 上不再有效。我也遇到过这种情况,但我还没有找到 AutoHotkey 中的替代方案。
您可能需要尝试不同的宏软件(AutoIt、PhraseExpress、Macro Express)。