Показать сообщение отдельно
Старый 06.01.2012, 12:52   #1
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,371
Написано 2,478 полезных сообщений
(для 6,866 пользователей)
Управление. Нажатые кнопки -> угол поворота

Здравствуйте, друзья обращаюсь к вам со следующим вопросом.
Почти всех играх где используется клавиатура уже стало стандартом управление WSAD или стрелки.
И игрок может одновременно нажимать 1 или 2 кнопки чтоб задать направление движения.
Во многих играх есть косяк при движении по диагонали так как складываются 2 вектора направления.
Обойти это можно задавая кнопками угол движения примерно так:


* используются только WSAD

Представим что у нас есть следующие переменные:
kbW - верх
kbS - низ
kbA - лево
kbD - право
Получаем следующую таблицу:
kbD       = 0
kbD + kbS = 45
kbS       = 90
kbA + kbS = 135
kbA       = 180
kbA + kbW = 225
kbW       = 270
kbD + kbW = 315
И вот вопрос: Нельзя ли это преобразование нажатых кнопок в угол поворота оптимизировать/упаковать как либо по элегантнее?
У меня соображалки не хватет может кто из вас сооружал нечто подобное?

З.Ы. Никакой проблемы нет! Лишь спортивный интерес. Я верю что это можно упаковать если не в одну то уж в пару строчек точно.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием