我已阅读虽然处理这个AA几篇文章的组合却试图执行一些后,总是得到同样的问题,XNA处理按键
快速注:这是家庭工作
我正在使用XNA为我的游戏设计课程重新创建超级粉碎兄弟(N64风格)。 现在我有2个密切相关的问题任何熟悉SSB的人都知道组合攻击,即按“前进A”,“上B”等,我有一个目前正在工作的Yoshi,有时甚至可以让他的组合攻击,但是我发现的主要问题是,除非键在完全相同的瞬间按下即对于一个又一举措,跳将目前熄灭
我的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;
}
我明显有更多的每一个可能的行动,但他们都安排,以便单一按键是最后一个,所以它可能注册其他人,但除非我在同一时刻他们按下它不会注册密钥前ss - 我试过的一些想法,在if语句中处理箭头键,睡一会儿线程,然后小鸡,如果箭头键和按钮即按下)
我的第二个问题,我辩论执行,但如果我这样做,SSB玩家会知道稍微向前推动一个游戏杆,然后按A会给一个快速踢/刺拳,但更难的按键(游戏杆移动更远/可能更快w/e)将创建一个粉碎移动,并想法如何我可以实现一个系统来识别轻按键和重按键之间?
一些游戏使用长度推模拟/表示轻/重型新闻。按<100 ms是“轻”,其他则是“重”。 – 2013-03-13 12:41:19
这也行得通。同样,你已经获得了缓冲区,所以你可以用它来记住按钮被第一次按下时,然后当你发现它不再被按下时,你可以得到从当前时间到你的时间间隔记录在缓冲区中。实质上,这里的总体信息是“缓冲您的关键输入”。 – anaximander 2013-03-13 12:54:39
谢谢,这有助于很多! – 2013-03-16 10:34:03