ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

フレーム

自機をプレイヤーの操作で移動するように実装したところ、なんかスムーズにいかず引っかかる感じがした。
そこで、DirectXのサンプルフレームワークのシーンをアップデートする関数

void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext )
{
}

の引数にあるfElapsedTime(経過時間)を調べてみたら、だいたい0.0167くらいの値なんだけど、ときどき倍くらいの値になったりすることがあった。
そこで、このfElapsedTimeを考慮して移動量を求めるようにした。
たとえば、次のような感じだったのを、

void FrameMove()
{
    x += 10;
}

次のように変更。値は適当。

void FrameMove(float fElapsedTime)
{
    x += fElapsedTime * 100;
}

これで前よりはスムーズに移動するようになった。でもどきどき引っかかるような感じは多少残っている。これは単純に描画の更新が遅れているからかな。