SRPGにおける移動ルートの計算について
Posted: 2011年3月26日(土) 21:56
こんばんは、新しくなってからは初めての投稿になります。
随分と便利になってて感動しました。
と、早速ですが掲題の件について…
現在SRPG(イメージとしてはファイアーエムブレムのようなもの)を作成しているのですが、
移動可能範囲を再帰を用いて出したまではいいもののキャラクターが移動するアニメーションをしたいため、移動ルートも必要になりました。
基本的にはカーソルの移動した通りに移動するのですが、例えば
・途中で移動範囲外に出てしまってからまた移動範囲内に戻ってきた場合
・前カーソルが移動したマスにカーソルを戻した場合
・くねくねと曲がりながら移動したために途中で移動力が足りなくなった場合
などに移動ルートを再計算する必要が出てきました。
※参考に画像を添付します。
フィールドは左上座標を(0,0)としたマスクラス(移動コストや種類、移動範囲表示中はその場所を通る際の最大残り移動力等を保持)
の二次元配列で構成されています。
こういった場合どのように移動ルートを保持するのが良いのでしょうか。
再計算が必要ない場合に考えていたものは、キャラクターを選択し、移動範囲を表示する際にキャラクターの移動力を変数Aに格納、移動回数を変数Bに格納、
カーソルが移動する度に変数Aの値をカーソル位置のマスの移動コスト分引いて、変数Bの値をマスに保存し、変数Bをインクリメント、
移動方向はマスに保存しておいた移動回数を順番に辿っていく、というものでした。
しかしこの方法だと例の再計算が必要になった際どうすれば良いのか思いつかず…
何かアドバイスをもらえたら、と思います。
言語はC++、開発環境はVC++ 2008 EEとDXライブラリです。
以上、よろしくお願いします。
随分と便利になってて感動しました。
と、早速ですが掲題の件について…
現在SRPG(イメージとしてはファイアーエムブレムのようなもの)を作成しているのですが、
移動可能範囲を再帰を用いて出したまではいいもののキャラクターが移動するアニメーションをしたいため、移動ルートも必要になりました。
基本的にはカーソルの移動した通りに移動するのですが、例えば
・途中で移動範囲外に出てしまってからまた移動範囲内に戻ってきた場合
・前カーソルが移動したマスにカーソルを戻した場合
・くねくねと曲がりながら移動したために途中で移動力が足りなくなった場合
などに移動ルートを再計算する必要が出てきました。
※参考に画像を添付します。
フィールドは左上座標を(0,0)としたマスクラス(移動コストや種類、移動範囲表示中はその場所を通る際の最大残り移動力等を保持)
の二次元配列で構成されています。
こういった場合どのように移動ルートを保持するのが良いのでしょうか。
再計算が必要ない場合に考えていたものは、キャラクターを選択し、移動範囲を表示する際にキャラクターの移動力を変数Aに格納、移動回数を変数Bに格納、
カーソルが移動する度に変数Aの値をカーソル位置のマスの移動コスト分引いて、変数Bの値をマスに保存し、変数Bをインクリメント、
移動方向はマスに保存しておいた移動回数を順番に辿っていく、というものでした。
しかしこの方法だと例の再計算が必要になった際どうすれば良いのか思いつかず…
何かアドバイスをもらえたら、と思います。
言語はC++、開発環境はVC++ 2008 EEとDXライブラリです。
以上、よろしくお願いします。