在按住另一个键时禁用/阻止另一个键



所以在这个游戏中,我用WASD键移动我的角色,但是如果我同时按住AD键, 游戏将其注册为向前移动(W|),因此角色开始向前移动而不是扫射动作(左)\(右)/

所以我需要一个代码来防止同时按下 AD键。

检查这个 GIF,这样你就能明白我的意思了!

我希望 A 和 D相互覆盖(我不使用W键),因为如果我同时点击AD,我的角色会向前移动,而不是像这样\/我想避免向前移动。

我只想坚持不懈地快速改变左\和右/扫射。

这是我到目前为止得到的代码:

~a::
If (GetKeyState("d", "p"))
{
Send {d up}
d = 0
}
Return
~d::
If (GetKeyState("a", "p"))
{
Send {a up}
a = 0
}
Return
a up::
If (d)
{
Send {d down}
d = 0
}
Return
d up::
If (a)
{
Send {a down}
a = 0
}
Return

基本上,这段代码几乎可以正常工作。

问题是如果我不改变数字,我就不能连续改变方向,我需要放开钥匙。它在 1 次方向改变后停止。如果我更改数字,它可以工作,但是经过几个方向更改后,它会向左或向右切换。即使我让它向左或向右移动......

有什么想法吗?

这应该有效。试试吧,让我知道。

$*a::
$*d::
SendInput, {a Up}{d Up}
StringReplace, hk, A_ThisHotkey, % "$*"
SendInput, {%hk% Down}
KeyWait, % hk
Send, {a Up}{d Up}
return

编辑:你可以试试下面的代码。也许它会帮助你

#SingleInstance, force
#Persistent
#NoEnv
#MaxThreadsPerHotkey, 1
~a & d::
~d & a::
Send, {a up}
key := "d"
SetTimer, pressdown, 10
return
~d::key := "d"
~a::key := "a"
~a up::key := "d"
~d up::key := "a"
pressdown:
if GetKeyState(key, "p")
{
SendInput, {%key% down}
SetTimer, pressdown, 30
}
else {
SetTimer, pressdown, Off
SendInput, {%key% up}
}
return

此脚本不允许同时按下 A 或 D。

相关内容

  • 没有找到相关文章

最新更新