Я использую 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. КСТАТИ. Почему 'test()' не является 'cd.test()'? – Logman