gpt4 book ai didi

c# - XNA:如何测量按键按下的时间?

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:25 25 4
gpt4 key购买 nike

我正在尝试在我的游戏中制作一个跳跃机制,它将像这样工作:

//velocity.Y是我要跳跃的 Sprite 的速度

 if (keystate.IsKeyDown(Keys.W))
{
velocity.Y = 3 - (time elapsed since start of jump);
}

我认为这可能是让我的 Sprite 跳跃的一个简单而优雅的解决方案,但如果不可能像这样就这么说,然后它又回到了绘图板。

最佳答案

我建议不要将物理如此直接地连接到玩家输入,这不是一个可扩展的架构。

有一个定义物理属性的接口(interface),例如由角色对象实现的速度。当玩家按下向上键时,您应该检查玩家是否在地面上,如果他们将加速度设置为向上移动。然后让物理系统遍历每个对象的列表,这些对象在移动实体之前应用重力和其他力实现物理接口(interface)。这样您就可以为游戏中的每个实体使用相同的物理代码。

我还建议不要将键盘输入直接连接到播放器的移动。您可以有一个名为“ICharacterController”的接口(interface),它定义了一个“nextInstruction”方法,该方法返回“CharacterInstructions”,它定义了角色可以采取的各种 Action ,例如跳跃和移动,这可以由输入类实现。然后您的角色类持有对 CharacterController 的引用,因此它只调用 nextInstruction,这样角色就可以由玩家输入、AI 或通过网络通信控制,但仍与玩家共享相同的行为。

Game Coding Complete如果您对游戏编程很认真,那么这是一本很棒的书。

我也可以推荐Game Engine Architecture

当您使用 XNA 时,您应该考虑使用 Game Components

关于c# - XNA:如何测量按键按下的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com