代码按下按钮
我正在写一个游戏,并试图使用箭头键移动一个人。代码按下按钮
我有这样的代码
if (Key_Down(DIK_DOWN))
{movedown(player)}
这工作,但我希望玩家把每一个键按下时,我创建和动画循环四个步骤。所以玩家不能输入任何更多的移动命令,直到动画结束,他们已经采取了四个步骤来制作代码。
if(player.move == false)
{
if (Key_Down(DIK_DOWN))
{movedown(player)}
}
现在的问题是,现在一旦按下按钮,程序就会像按住按钮一样继续移动,直到按下另一个方向。
任何人都可以解释外循环做了什么代码和解决问题?
它是在Visual C++ 2005和编程的Direct X 9.C
编辑:
如果我删除了外环,然后按下按钮只能注册一次,所以我不认为这是移动功能。
只需跟踪变量中的关键状态。所以你可以重置一个移动计数器。类似这样,结合两者:
int MovingDown = 0;
...
if (!Key_Down(DIK_DOWN)) MovingDown = 0;
else if (MovingDown < 4) {
MovingDown++;
movedown(player);
}
很难说没有看到更多的代码库,但我猜你在移动播放器后不会重新设置player.move
。你有没有尝试在那里粘贴一些休息点来看看被调用的内容,为什么?
如果您删除if(player.move == false)
行,它是否有同样的问题? ..或者你在其他地方改过什么了吗?如果你能发布更多的代码库的喜欢整下移功能和anythnig否则其交互(例如动画代码),这将有助于我们帮助您......
[编辑]是下移的宏?也许你有一些特殊的副作用从那里消失?如果没有,函数调用后它应该有一个分号。
KEY_DOWN返回什么?这是一个API调用?尝试根据您期望它返回的确切值进行测试?
我正在重置player.move,我有突破指出它。一切都按照我的逻辑工作,但是一旦if(Key_Down(DIK_DOWN))语句被读取为真,一旦它永远从那一点开始执行,无论如何。 – Skeith 2011-05-04 12:18:52
那么使用if语句没什么问题。你在这里看到的神器将会由其他东西引起。如果你不准备发布更多的代码,恐怕在黑暗中我们可以提供更多的刺伤。 – 2011-05-04 15:26:40
moveDown里面的代码是什么样的? – rzetterberg 2011-05-04 12:07:41
@Ancide world.x + 16 – Skeith 2011-05-04 12:10:35