2016-10-08 10 views
0

В принципе, я хочу, чтобы, когда у меня есть две клавиши, спрессованные вместе (как A, так и D, в частности), последняя нажатая клавиша должна иметь приоритет, а ключ до этого должен быть «подавлен» (без ввода).Приоритет, когда одновременно нажимаются 2 клавиши - скрипт для игры

Например: в игре, когда вы нажимаете A, ваш персонаж перемещается влево, а когда вы нажимаете D, он перемещается вправо. При нажатии этих двух клавиш символ останавливается. Теперь вот что я не хочу, чтобы персонаж остановился, я хочу, чтобы он продолжал двигаться, основываясь на последней нажатой клавише, хотя я одновременно держу 2 клавиши.

Я думал, что это будет тривиальная задача, но я действительно немного ошеломлен, пытаясь научиться реализовывать это (я ноб, извините: C), поэтому я пришел сюда, чтобы найти помощь как это сделать на AHK или любой простой для компиляции язык сценариев, который напрямую изменяет ввод ключа. Я не пытаюсь изменить или создать игру, поэтому сценарий, который переназначает эти ключи, достаточно!

+0

Я забыл добавить: он должен работать неограниченно с теми же двумя клавишами, поэтому нажатие A и D делает D переопределением A, а затем отпускание A и его повторное нажатие должно переопределить D и так далее. Наверное, немного сложно, я не знаю. – Silveirous

ответ

2

AutoHotKey пример, следуя вашей "А и D, в частности" вопрос:

for k,v in StrSplit("ad") 
    Hotkey, % "~$" v,Silveirous 

Silveirous: 
t:=SubStr(A_PriorHotkey,3) 
if GetKeyState(t) and (A_ThisHotkey!=A_PriorHotkey) 
    Send {%t% up} 
return 

Документация:

for k,v in, StrSplit(), Hotkey,,,, "~$", SubStr(), A_Prior/ThisHotkey, if, GetKeyState(), t:=... and ... != , Send {%t% up}


Edit:

Другое решение, сделал, чтобы работать, как описано в ФП Править/комментарий:

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

Убедитесь в том, чтобы учитывать разницу между #If и if (expression) случаев использования.

+0

Боб, большое вам спасибо за ваш ответ! Я пробовал сценарий, и это сработало, но я считаю, что не описал проблему, как следовало бы. Когда я нажимал две клавиши вместе, он делал то, что должен был делать, но последовательности клавиш, сжимаемых как A и D вместе, затем отпустите D и снова нажмите A, и так далее и т. Д., И так далее не будет работать, только первая комбинация нажатых клавиш, первый A, а затем D. Любая идея о том, как преодолеть это? – Silveirous

+0

Кроме того, эта документация автоматизирована на сайте или вы связали все это? : P в любом случае, большое вам спасибо! Я попытаюсь понять код, но это, вероятно, займет некоторое время. – Silveirous

+0

@Silveirous отредактировал – Bob