void Game::UpdateGame(){ } 関数部の///////コメント内部のコードですがこれはフレームレートの制御コードです。
if (deltaTime > 0.05f){ } if文のコードですが参考書には
" デバッグガーでブレークポイントで5秒の停止時間を入れただけでも巨大なデルタタイムが発生し、シュミレーションでは何もかもが、はるか先へと飛んでしまう この問題を解決するにはデルタタイムの値をある最大値以下に制限するこうすればゲームのシュミレーションがただの1フレームではるか遠くに飛んで行ってしまうことはなくなる。"
と解説がありますがこれはどういう意味なのでしょうか?**ある最大値以下に制限すればという文章ですがなぜ0.05;**なのでしょうか?
//計算 void Game::UpdateGame() { ////////////////////////////////////////////////////////////////////////////// while (!SDL_TICKS_PASSED(SDL_GetTicks(), mTicksCount + 16)); float deltaTime = (SDL_GetTicks() - mTicksCount) / 1000.0f; if (deltaTime > 0.05f) { deltaTime = 0.05f; } mTicksCount = SDL_GetTicks(); /////////////////////////////////////////////////////////////////////////////// mUpdatingActors = true;//すべてのアクターを更新 for(auto actor : mActors) { actor->Update(deltaTime); } mShip->UpdateActor(deltaTime);//プレイヤー mUpdatingActors = false; //待ちになっていたアクターをmActorsに移動 for(auto pending : mPendingActors) { mActors.emplace_back(pending); } mPendingActors.clear(); std::vector<Actor*> deadActors; for(auto actor : mActors) { if(actor->GetState() == Actor::EDead) { deadActors.emplace_back(actor); } } //死んだアクターを消す(mActorsから削除される) for(auto actor : deadActors) { delete actor; } } //レンダリング void Game::GenerateOutput() { SDL_SetRenderDrawColor(mRenderer,0,0,255,255);//背景色を青に設定 SDL_RenderClear(mRenderer);//バックバッファをクリア // 全てのスプライトをバックバッファに書き込む for (auto sprite : mSprites) { sprite->Draw(mRenderer); } SDL_RenderPresent(mRenderer);//バックバッファをフロントバッファへ書き込み }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/07/27 03:53
2020/07/27 03:57
2020/07/27 04:00
退会済みユーザー
2020/07/27 04:05
2020/07/27 04:13 編集
退会済みユーザー
2020/07/27 05:27
2020/07/27 05:34
2020/07/27 05:38
2020/07/27 05:50
2020/07/27 06:17
退会済みユーザー
2020/07/27 06:23
2020/07/27 07:11 編集
2020/07/27 07:59