以前の質問ではお世話になりました。
現在は自キャラクターの歩行アニメーション処理を打ち込んでいるのですが、
「移動している間のフレーム数をカウントする変数 cnt」がうまく動作してくれません。
int cnt =0;で初期化しているはずなのですが、
デバッグをしてもやたら巨大な数字が1ずつ減って表示されるだけです。
原因究明に力を貸して頂けると幸いです。
以下のコードはPlayerクラスのupdateメソッドのみです。
void Player::update() { //計算フェーズ
int udflg = 0; // 上下どちらかが押されているかどうか
int lrflg = 0; // 左右どちらかが押されていいるかどうか
signed int xi = 0;// xの増加量
signed int yi = 0;// yの増加量
double move = 1; //移動係数 斜め移動の場合√2を代入
// キー判定
if (getKey(KEY_INPUT_RIGHT) >= 1){
lrflg = 1; xi += STRIDE; dir = 2;
}
else if (getKey(KEY_INPUT_LEFT) >= 1){
lrflg = 1; xi -= STRIDE; dir = 1;
}
if (getKey(KEY_INPUT_UP) >= 1){
udflg = 1; yi -= STRIDE; dir = 3;
}
else if (getKey(KEY_INPUT_DOWN) >= 1){
udflg = 1; yi += STRIDE; dir = 0;
}
//斜め移動だったら移動係数をおおよそ1/√2に
if (udflg & lrflg == 1) {
move = sqrt(2.0);
}
//停止してたらアニメ状態を1に
if (udflg & lrflg == 0) {
anim = 1; cnt = 0;
}
//動いてたら移動中フレーム数を加算
else {
cnt++;
//規定フレーム数に達したら画像を変える
if (cnt % ANIMEFRAME == 0) {
if (anim == 3){ anim = 0; }
else { anim++; }
}
}
//移動の計算処理
if(!xi==0) x += double(xi/move);
if(!yi==0) y += double(yi/move);
// ここからデバッグ用
// 白色の値を取得
int Cr = GetColor(255, 255, 255);
// 文字列の描画
DrawFormatString(0, 0, Cr, "cnt %d", cnt);
}