Чтобы использовать для навигации по инвентарю клавиши A,W,S,D, используемые обычно для управления перемещением игрока, переопределил им команды (в классе HUD'а), примерно так:
Код
local name keyW; keyW='W'; MyController.PlayerInput.SetBind(keyW, "Inv_MoveForward");
Когда инвентарь закрывается, включается обратное переопределение:
И вот это обратное переопределение почему-то не работает. То есть, отображение клавиши W на команду GBA_MoveForward работает (я проверял в игре с помощью функции GetBind), но сама команда почему-то не перемещает игрока. В Default.Input.ini она определена так:
То есть эта команда увеличивает переменную aBaseY в классе Input, и в следствии этого перемещает игрока вперед. Однако в моем случае как раз таки этого изменения aBaseY и не происходит, и непонятно почему, не может же мое первое переопределение клавиши W отменить определение команды GBA_MoveForward в конфигурационном файле пользовательского ввода?
Добавлено (12 Май 2014, 17:30) --------------------------------------------- Предыдущий вопрос с повестки вечности снимается, так как ошибка была не в переопределении ввода, а в том, что я параллельно переопределил состояние PlayerWalking (класс производный от PlayerController). На сколько я понял, в этом состоянии, вызов функции AdjustPlayerWalkingMoveAccel собственно и ответственен за визуализацию изменений input переменных (как раз те что передают программе пользовательский ввод с клавиатуры и мыши), которые я переопределял. На самом деле AdjustPlayerWalkingMoveAccel - странная функция, в PlayerController есть объявление этой функции, но ее тело отсутствует, при том это не nativ-функция, т.е. она не в скомпилированном С++коде в исполняемых файлах. Если кто-то сможет прояснить ситуацию с этой загадочной функцией, буду благодарен).