ゲーム更新ループ内でブールフラグが偽から真に変化した回数を数える最も良い方法は何でしょうか?たとえば、以下のような単純な例がある場合、ボタン "A"を押したままにすると、InputクラスはGameクラスのenable boolをtrueに設定し、それを解放すればfalseに設定し、Gameクラス内のカウンタをカウントします有効にされた回数がtrueからfalseに変更されました。たとえば、 "A"を押して2回離すと2に更新されます。Game :: Update()を60fpsで更新すると、現在の方法ではカウンタが正しくなりません。それを修正するために、チェックループとカウンタをUpdateループの代わりにSetEnableの中に移動しました。ゲームの更新ループ内でブール値の真偽値を変更する
// Input class
// Waits for input
void Input::HandleKeyDown()
{
// Checks if key A is pressed down
if (key == KEY_A)
game.SetEnable(true);
}
void Input::HandleKeyUp()
{
// Checks if key A is released
if (key == KEY_A)
game.SetEnable(false);
}
// Game class
void Game::SetEnable(bool enable)
{
if(enable == enable_)
return;
enable_ = enable;
//Will increment the counter as many times A was pressed
if(enable)
counter_ += 1;
}
void Game::Update()
{
// Updates with 60fps
// Will increment the counter as long as A is pressed
/*
if(enable_ == true)
counter_ += 1;
*/
}
更新あなたが状態を変えた場合のカウンターを。したがって、KEY_Aが押され、enable_がfalseの場合、trueに変更してカウントします。 –
カウンタは、実際に何回イネーブルを変更したかをカウントしません。 –
問題が明確ではないので、私は言い換えると詳細を追加する必要がありました。私がそれをさらに更新する必要があるかどうかを教えてください。 – sabotage3d