歩行アニメーションの実装について

 おおよそ日報のようなもの。昨日はゲームのプログラムを書いたり、読書をしたり、研究分野の調べ学習をしたりしていた。

 ゲームのプログラムの中に歩行アニメーションを描画するためのコードがある。画像が多いのでコード自体は長くなっているが、構造自体はなかなか単純に作れたと思うのでこれについて書いてみる。

 キャラクタの基本画像は4枚。上、下、左、右を向いた画像がそれぞれ用意されている。それに加えて歩行時の画像が各方向に2枚ある。右足を前に出している画像と、左足を前に出している画像である。これが各方向について2枚あるので、歩行用画像が合わせて8枚ある。これらを合わせた合計12枚の画像をうまく切り替えて歩いているように見せたいわけである。

 まず、プレイヤーが移動中であるかを判定するフラグ変数(フラグ変数とは、特定の状態になっているのか、あるいはなっていないのかを表す変数のことである。手旗信号をイメージすれば良い)を用意する。例えばこれをin_walkingと命名するとして、このin_walkingはプレイヤーの移動中はTrueになっていて、それ以外の場面ではFalseになっている。移動はキーボードで行うことになっているので、キーボードの入力がある最中はin_walkingをTrueにして、キーボードからの入力がない時はin_walkingをFalseにすれば良い。in_walkingがFalseからTrueになる時、つまりはキャラクターの移動入力をまさに始めたタイミングで、表示すべき画像を保持している変数(direction)に対して、右足を出したキャラの画像をセットする。同時にin_walkingをTrueにする。そうして、以降はin_walkingがTrueである限りは、表示したフレーム数をチェックし続けて、特定のフレーム数に達するたびに、左足を出した画像、右足を出した画像、と交互に出るようにする。移動時から平常時に戻る時は、キーボードから手が離れたまさにそのタイミングに、表示すべき画像を保持している変数(direction)に直立姿勢の基本画像をセットして、in_walkingをFalseにする。in_walkingがFalseになっている間は、基本姿勢の画像を愚直に画面に表示するだけで、フレーム数のカウントも、画像の切り替えも行わない。

 以上のような実装で、とりあえず歩行アニメーションを作ることができた。

3 件のコメント:

りりん(輪理無) さんのコメント...

自機が動くと現実味が増しますなぁ

HoriK さんのコメント...

そうですね。しばらくは自機の行動を一通り作ることを目指して開発します。それが終わったら他キャラも動くようにして、それができたら、会話とか戦闘システムを作っていく予定

HoriK さんのコメント...

え、その実装だと、歩行中は毎回初期化されるから結局歩行アニメーションにならなくない???

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。