ページ 11

SLG キャラの移動について

Posted: 2011年9月04日(日) 02:45
by あさか
度々の質問申し訳御座いません。

今回はキャラの移動について。
前回移動範囲を求めるまでは出来、更に目標地点がクリックされた際にどの様にキャラが動いていくか

(寄り道せず無駄なく目的地点までスムーズに動くようにマスを選択、移動していく)
というアルゴリズム自体は考えてあるのですが、肝心のキャラ移動についての知識が全くなくお尋ねした次第です。

キャラの移動とはつまり一マス毎の歩くアニメーションの事です。
これの描画というのは普通どの様に行われているものなのでしょうか?

素人ながら思い付いたものは

①1フレーム毎に画像をズラして描画していく
      ・・・描画関数内にカウンター用の変数を用意してその値によってif文で分け、座標をズラしつつ描画していけば出来なくもなさそうなのですが、圧倒的に非効率的な気がします・・・。
ただこれ専用の関数を作っておけば、画像の差し替えをするだけでどのキャラにも適応可能なのでその点は便利なのかなと。

②元からキャラが一マス歩く動画を用意していてそれを流す。
      ・・・詳しいやり方は思いつきませんが、仮にこれを行った場合キャラ毎の動画を事前に用意しておかなければならず、これも非効率的な気がします。


この二点だけです。
正直どちらも間違っている気がしてなりません。
普通市販のゲームなどのキャラ移動はどのように行われているものなのでしょうか?

Re: SLG キャラの移動について

Posted: 2011年9月04日(日) 09:31
by non
「旧ゲームプログラミングの館」を参考にしたら如何ですか。

Re: SLG キャラの移動について

Posted: 2011年9月04日(日) 11:33
by softya(ソフト屋)
一般的には、まず必要な歩行パターンを必要な方向分用意します。
基本的なのは、(1)止まる→(2)右足を前→(1)止まる→(3)左足を前の3パーツで構成されるパターンですね。
「C言語~ゲームプログラミングの館~」
http://dixq.net/g/01.html
ここのは3パターンですが、アニメしやすいように4パーツとなっています。

あとは、このパーツを一定時間ごとにアニメさせつつ、表示座標を移動させてやるだけです。
アニメ周期は、フレーム数でコントロール可能です。つまり一定フレーム数毎に1コマ進めるだけです。
表示座標は、1フレームごとに違和感のない、かつ気持の良い速度で目的地に移動させます。これは速度値自体を持っていればよいでしょう。

Re: SLG キャラの移動について

Posted: 2011年9月05日(月) 04:02
by あさか
あぁやはり画像をずらし描写していく方法なのですね。

お二人とも有難う御座いました。
そのように作ります。