Добавлен ScorpioT1000,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Lua
Тип:
Наработка
Версия Warcraft:
1.31+
Наработка превращает нажатия клавиш W, A, S, D, Ctrl, Space в нормированный Vector3, который можно сразу применять к юниту.
- Нормализация позволяет обезопасить управление от всех этих страйфов и распрыжек, равномерно направляя юнита в любую из комбинаций сторон.
- Для удобства использует eventDispatcher, тем самым подключаться к ней можно буквально в GUI.
- Сама регистрирует на всех игроков-людей.
- Можно задавать свой набор клавиш.
Демо
Установка
Вручную
- Установить github.com/Indaxia/lua-eventDispatcher
- Установить github.com/Indaxia/lua-wGeometry
- Копировать код из /src и использовать глобалку eventDispatcher и (при смене клавиш) inputMovement
Или WLPM
Используя WLPM и import("inputMovement") + import("eventDispatcher"):
wlpm install https://github.com/Indaxia/lua-inputMovement
Использование
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 таймера игрового времени.
inputMovement.changeKeyMap({
FORWARD = OSKEY_W,
BACKWARD = OSKEY_S,
LEFT = OSKEY_A,
RIGHT = OSKEY_D,
UP = OSKEY_SPACE,
DOWN = OSKEY_LCONTROL
})
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ScorpioT1000
А система норм, полезная штука
Отредактирован H
Если её отпустить, вектор будет минусовой, а если потом нажать то 0.
В таком кейсе вообще положительный никак не сделать, кроме манимуляции с паузой.
Отредактирован ScorpioT1000
Теперь при вертикальном движении в тестовой карте юнит не вращается.