Каким образом записывать в коллекцию любое нажатие (с учетом зажатыx клавиш) пользователем?
Мне требуется отслеживать любое нажатие пользователя на клавиатуре и с учетом зажатыми клавишами, и записывать нажатые клавиши в коллекцию. Каким образом реализовать это в методе Update() или FixedUpdate()?
FixedUpdate: Frame-rate independent MonoBehaviour.FixedUpdate message for physics calculations.
Update: Update is called every frame, if the MonoBehaviour is enabled.
Василий, а можете пожалуйста подробнее описать, то что вы имели в виду, просто я начинающий разработчик на Unity. У меня возникает проблема, каким образом считать любое нажатие клавиши.
a1nsworth, оу, я подумал, что вопрос в том, в каком методе следует проверять нажатие клавиш.
Вообще, пишут, что можно через Event это узнать, но не уверен, что это именно то, что нужно.
В принципе, почему бы не попробовать? https://docs.unity3d.com/ScriptReference/Event-key...
Василий Банников, пробовал не получается, вылетают любо ошибки, это первое и второе, если работает, то не получается считывать зажатие какой либо клавиши. Мне это все нужно для того, чтобы организовать управление для двух игроков на одной клавиатуре
Василий Банников, Я хочу сделать контроллер для двух игроков на одной клавиатуре. Я хочу в классе, который будет записывать нажатые кнопки на клавиатуре. С помощью другого класс брать нажатые клавиши и отрабатывать, чтобы потом передвигать персонажей. Если вдруг есть способ, как-то красиво и правильно сделать контроллер для двух персонажей на одной клавиатуре, буду благодарен.
a1nsworth, а чем в этом плане контроллер на двух игроков отличается от контроллера на одного?
Просто создай один класс для контроллера, а потом создай два его экземпляра, которые просто будут отслеживать нажатия разных клавиш.
Первый, например, будет отслеживать wasd, а другой - стрелочки, к примеру.
a1nsworth, выглядит немного глупо :)
Имел в виду что-то такое
public class KeyboardInputController : MonoBehaviour
{
[field: SerializeField]
public KeyCode MoveForwardKey {get;set;}
void Update()
{
if(Input.GetKey(MoveForwardKey))
{
// какое-то действите.
// Скорее всего вызов какого-нибудь события, на которое должна отреагировать игра
}
}
}
Потом просто располагаешь на сцене два таких контроллера, просто указав им на разные кнопки.