0
我正在使用GetAsyncKeyState()
来获取我正在制作的游戏的每个帧的输入。在按键之间添加一个延迟
我想在每次按下时移动一个x
,但不是每一帧都必须有延迟。我现在每次按下按键时都会冷静下来。
这里是我CoolDown
类的某些部分:
bool test(bool asumedStatus)
{
if(asumedStatus == status)
{
return true;
} else
{
return false;
}
}
void go()
{
if(currentCount == runFor)
{
status = OFF_COOLDOWN;
} else
{
currentCount++;
}
}
void start()
{
currentCount = 0;
status = ON_COOLDOWN;
}
controls
被调用每一帧来获取用户输入
void controls()
{
if(test(OFF_COOLDOWN))
{
if(KEY_L && !KEY_R && !KEY_U && !KEY_D)
{
left();
print();
cd.start();
}
else if(KEY_R && !KEY_L && !KEY_D && !KEY_U)
{
right();
print();
cd.start();
} else if(KEY_U && !KEY_L && !KEY_D && !KEY_R)
{
up();
print();
cd.start();
} else if(KEY_D && !KEY_L && !KEY_R && !KEY_U)
{
down();
print();
cd.start();
}
} else
{
cd.go();
}
}
不幸的是,这并不工作,延迟不存在。没有改变。
有人有任何想法我可以做到这一点?
你试图给'runFor'非常大的数字?简单的游戏可以运行数千帧每秒和游戏,无需图形甚至数百万帧/秒。还有一个更好的主意是使用Rakete1111提出的时间。 BTW。为什么'test()'不是'cd.test()'? – Logman