我正在尝试为游戏制作一个简单的可重用引擎,例如乒乓。我在时间和输入方面遇到了麻烦。
例如,使用XNA Game Class,Update方法每秒触发60次。要在我从头开始制作的课程中这样做,我会使用计时器,还是完全不同的东西?
为了澄清输入问题,我如何检测Key事件(EX:Key被按下)?我认为这与代表有关,但我不太确定。
编辑:我没有使用XNA。
答案 0 :(得分:1)
您可能希望使用带有回调的计时器,或者甚至是完全是游戏循环的第二个线程。我用Java和C#完成了它;我倾向于使用计时器,因为对于大多数游戏而言,毫秒分辨率足够好。如果您想查看一些(Java)示例代码,请查看我的rudimentary game engine。至于游戏输入......好吧,看看示例代码。它管理事件驱动的输入并将其封装,以便可以轮询数据。 :P
或者,请查看MonoXNA。它尚未100%完成,但2D部分和基本游戏内容(游戏循环,输入等)都是。
答案 1 :(得分:0)
您只需在更新方法中检查键盘输入即可。或者,您可以创建可在更新方法中调用的updateInput方法。
private void updateInput()
{
KeyboardState newState = Keyboard.GetState();
if (newState.IsKeyDown(Keys.Enter))
{
// code goes here
}
}
基本上就是这样!当然,这是一个基本的方法,因为你正在寻找一个可重用的引擎,你应该看看GameComponent类。在XNA中,您可以制作可在不同游戏项目中重复使用的组件。
希望这有帮助!