Циклы игры C # и ввод - PullRequest
       12

Циклы игры C # и ввод

0 голосов
/ 30 декабря 2011

Я пытаюсь сделать простой многоразовый движок для игры, такой как понг. У меня проблемы со сроками и входами.

Например, при использовании класса игр XNA метод обновления запускается 60 раз в секунду. Чтобы сделать это в классе, который я делаю с нуля, я бы использовал таймеры или что-то совсем другое?

Чтобы прояснить проблему с входными данными, как мне обнаружить событие Key (EX: клавиша нажата)? Я думаю, что это связано с делегатами, но я не совсем уверен.

РЕДАКТИРОВАТЬ: я не использую XNA.

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Вы можете использовать таймеры с обратным вызовом или даже второй поток, который является полностью игровым циклом.Я сделал это на Java и C #;Я склонен использовать таймеры, поскольку разрешение в миллисекундах достаточно для большинства игр.Если вы хотите, чтобы какой-то (Java) пример кода был просмотрен, посмотрите мой элементарный игровой движок .Что касается ввода в игру ... хорошо, посмотрите пример кода.Он управляет вводом, управляемым событиями, и инкапсулирует его, чтобы данные могли быть опрошены.: P

Или посмотрите MonoXNA .Он еще не завершен на 100%, но 2D части и основные игровые вещи (игровой цикл, ввод и т. Д.).

0 голосов
/ 30 декабря 2011

Все, что вам действительно нужно сделать, это просто проверить ввод с клавиатуры в вашем методе обновления. Или вы можете создать метод updateInput, который можно вызывать в вашем методе обновления.

private void updateInput()
{
    KeyboardState newState = Keyboard.GetState();

    if (newState.IsKeyDown(Keys.Enter))
    {
        // code goes here
    }
}

Вот и все! Конечно, это рудиментарный подход, и, поскольку вы хотите создать многоразовый движок, вам следует обратиться к классу GameComponent . В XNA вы создаете компоненты, которые можно повторно использовать в различных игровых проектах.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...