【发布时间】:2013-02-28 18:41:53
【问题描述】:
我已经阅读了一些处理这个问题的文章,但是在尝试实施一些之后,总是遇到同样的问题,
快速说明:这是家庭作业
我正在使用 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) 将创造一个粉碎动作,以及我如何实现一个系统来识别轻重按键之间的想法?
【问题讨论】: