游戏循环中的c# KeyDown事件

本文关键字:KeyDown 事件 循环 游戏 | 更新日期: 2023-09-27 18:11:40

我正在制作一款用c#编写的游戏,但却陷入了困境。背景一直在移动,这是在一个循环中用Timer来确保背景一直在移动。现在,我需要检查用户是否按下空格键将玩家向上移动。如何检查是否有keydown事件?我不能使用KeyDown事件子,因为游戏循环一直在工作,所以KeyDown事件子无法工作。我只是想找个方向。谢谢!

游戏循环中的c# KeyDown事件

在你的tick事件中,你可以检查

if (Keyboard.IsKeyDown(Key.Space))
{
    ... Do stuff
}

只是猜测,因为您没有提供任何代码。

尝试在每个循环中调用Application.DoEvents();,并按您的意愿使用KeyDown

编辑:

好吧,这意味着你没有使用游戏循环,但你有一个事件驱动的应用程序(通常是获胜应用程序)。调用Application.DoEvents()让窗口在常规游戏循环中处理所有回调(不是你的情况)。

我已经更新了代码再次显示它是如何工作的-我相信通过例子学习是好的,但首先,你必须学习基础知识(对不起,但游戏太复杂了,无法学习c#)…

private bool isKeyUpPressed;
private void tmrTick_Tick(object sender, EventArgs e) { 
    if (isKeyUpPressed)
    {
        // move player up
    }
} 
private void Form1_KeyDown(object sender, KeyEventArgs b) { 
    isKeyUpPressed = b.KeyCode == Keys.Up;
}