ゲーム開発21:キャラクタアニメーション

a793fad8.jpgキャラクタのアニメーションは結局シンプルなやり方で実装しました。

スプライトを6枚用意してspr_no[]という配列に格納します。spr_no[]内の0~2に右向きスプライト、3~5に左向きスプライトてな感じで3枚ずつ入れてます。

これを時間経過にあわせて差し替えていきます。時間経過はtimeという変数を用意して、これを加算していく事で実現します。ここではtimeが5の倍数になったら次のスプライトに差し替えます。スプライトの決定方法は(time/5)を3で割った余りになります。

最後にジャンプしてたり落下してる場合にアニメーションさせるのは変なので、重力変数gravityが0の場合のみ時間経過させるようにしてます。

これで歩くアニメだけは出来ました。

次回、というか並行して音楽の処理を触ってたんだけど、同じDirectX9.0cでも色々バージョンによる差異があるみたいで、資料が少なくちょっと苦労してます。

音楽後回しにして、ゲームとしてのギミックなんかを先にやろうかな。

//-----------------------------------------------------------------------------
// 移動
void CMyChara::Move()
{
 float work_x, work_y; // 移動量

 // 他の処理

 // スプライトアニメーション
 if (work_x!=0) {
  if (work_x<0) {
   // 左向き
   now_spr_no=spr_no[((time/5)%3)+3];
  }
  else {
   // 右向き
   now_spr_no=spr_no[((time/5)%3)];
  }
  if (gravity==0) {
   time++;
  }
 }
}

コメントを残す

メールアドレスが公開されることはありません。