公式サンプルのDxCHara.xの歩きモーションなのでxということになります。
MV1GetAttachAnimTotalTimeで取得できる値は12000.0fでした。
この歩きアニメーションのサンプルが何フレームで作られているのか
明確にはわかりませんが30〜60フレーム程度になるのではないかと推測してましたがじつはよくわかってません。
なるほど、管理人さんがおっしゃるように読み込むファイルフォーマットによって
取得できる値も変わってくるようなものなのですね、把握できました。
以前に考えていた方法としては
アニメーションのスタート時に再生フレームの変数を0に、
ループする時に+1を加えるという方法がありましたが
公式サンプルほぼそのままですがこのような単純な方法で
良いのならそのまま使おうかなと考えています。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int ModelHandle;
float AnimTotalTime;
float AnimNowTime;
int AnimAttachIndex;
int frame=0;
ChangeWindowMode(TRUE);
if (DxLib_Init() < 0) return -1;
ModelHandle = MV1LoadModel("DxChara.x");
AnimAttachIndex = MV1AttachAnim(ModelHandle, 1);
AnimTotalTime = MV1GetAttachAnimTotalTime(ModelHandle, AnimAttachIndex);
AnimNowTime = 0.0f;
MV1SetAttachAnimTime(ModelHandle, AnimAttachIndex, AnimNowTime);
SetDrawScreen(DX_SCREEN_BACK);
SetCameraPositionAndTarget_UpVecY(VGet(1340.0f, 600.0f, -420.0f), VGet(0.0f, 400.0f, -420.0f));
SetCameraNearFar(16.0f, 3800.0f);
SetBackgroundColor(128, 128, 128);
while (ProcessMessage() == 0)
{
ClearDrawScreen();
AnimNowTime += 100.0f;
if (AnimNowTime >= AnimTotalTime)
{
AnimNowTime -= AnimTotalTime;
frame=0;
}
MV1SetAttachAnimTime(ModelHandle, AnimAttachIndex, AnimNowTime);
MV1DrawModel(ModelHandle);
DrawFormatString(50, 60, GetColor(255, 255, 255), "TotalTime %f",AnimTotalTime);
DrawFormatString(50, 80, GetColor(255, 255, 255), "NowTime %f",AnimNowTime);
DrawFormatString(50,100, GetColor(255,255,255), "Frame %d",frame);
ScreenFlip();
frame++;
}
DxLib_End();
return 0;
}