我已经阅读了一些处理此问题的文章,但是在尝试实施了一些之后,总是遇到同样的问题,
快速说明:这是家庭作业
我正在使用 XNA 为我的游戏设计课重新创建 Super Smash Brothers(N64 风格)。现在我有 2 个与 SSB 密切相关的问题,任何熟悉 SSB 的人都会知道组合攻击,即按“Forward A”、“Up B”等。我现在有一个正在工作的 Yoshi,你有时甚至可以关闭他的组合,但是我发现的主要问题是,除非在完全相同的时刻按下键,否则另一个动作,即向上 A,跳跃会消失
目前我的 if 语句是....
if (state.IsKeyDown(Keys.Up) && state.IsKeyDown(Keys.B))
{
actionComponent.curAction.secondaryAction = SecondaryAction.Stand;
actionComponent.curAction.primaryAction = PrimaryAction.Up_B;
}
else if (state.IsKeyDown(Keys.Up) && state.IsKeyDown(Keys.A))
{
//Console.WriteLine("This is C#");
actionComponent.curAction.primaryAction = PrimaryAction.Up_A;
actionComponent.curAction.secondaryAction = SecondaryAction.Smash;
spriteComponent.curColumn = 0;
}
else if (state.IsKeyDown(Keys.Up))
{
actionComponent.curAction.secondaryAction = SecondaryAction.Jump;
actionComponent.curAction.primaryAction = PrimaryAction.None;
}
对于每个可能的动作,我显然有更多,但它们都被安排好,因此单个按键是最后一个按键,因此可以注册其他按键,但除非我同时按下它们,否则它不会注册按键 - 一个我尝试过的几个想法,在 if 语句中处理箭头键,让线程休眠一会儿,然后如果箭头键和按钮(即 A 被按下)则小鸡)
我的第二个问题,我正在讨论是否实施,但如果我这样做了,SSB 玩家会知道在操纵杆上稍微向前按下,然后按 A 会快速踢/刺,但按键会更硬(操纵杆移动得更远/可能更快 w/ e)将创建一个粉碎动作,以及我如何实现一个系统来识别轻重按键之间的想法?