Наработка превращает нажатия клавиш W, A, S, D, Ctrl, Space в нормированный Vector3, который можно сразу применять к юниту.
- Нормализация позволяет обезопасить управление от всех этих страйфов и распрыжек, равномерно направляя юнита в любую из комбинаций сторон.
- Для удобства использует EventDispatcher, тем самым подключаться к ней можно буквально в GUI.
- Сама регистрирует на всех игроков-людей.
- Можно задавать свой набор клавиш.
Демо
Установка
Использование
local EventDispatcher = Imp.import(EventDispatcher)
EventDispatcher.on("input.movement", function(event)
-- Игрок, нажавший клавишу
event.data.player
-- Vector3 норм. вектор назначения
event.data.destination
-- Vector3 норм. вектор текущей нажатой/отжатой клавиши (напр., для прыжков)
event.data.rawVector
-- string айди клавиши
event.data.keyId
end)
Свой набор клавиш
Можно задать свой набор клавиш, вызвав InputMovement.changeKeyMap() после срабатывания 0.01 таймера игрового времени.
local InputMovement = Imp.import(InputMovement)
InputMovement.changeKeyMap({
FORWARD = OSKEY_W,
BACKWARD = OSKEY_S,
LEFT = OSKEY_A,
RIGHT = OSKEY_D,
UP = OSKEY_SPACE,
DOWN = OSKEY_LCONTROL
})
Ред. ScorpioT1000
А система норм, полезная штука
Ред. H
Если её отпустить, вектор будет минусовой, а если потом нажать то 0.
В таком кейсе вообще положительный никак не сделать, кроме манимуляции с паузой.
Ред. ScorpioT1000
Теперь при вертикальном движении в тестовой карте юнит не вращается.