自分でも考えてみたのですが
何か他に良いやり方などがあったら教えてもらいたいです。
こちらのサイトのようなマップを作ったのですが、
村人のようにマップを移動するイベントはどう作ればよいのでしょうか。
マップをクラスで作って変数にマップ位置と、村人を描く位置を作り
村人を描く位置が(マップチップのサイズの半分)以上進んだら隣のマップ位置に移り
(-マップチップサイズの半分)を代入しから0まで村人を描く位置に持っていくというのを考えたのですが
効率が悪いような感じがします。
動くマップチップについてですが
私が作りたいのは川の流れのようなものです。
私の考えているやり方だと、クラス内の関数でマップチップの番号を変えて描画する方法なのですが、
毎回マップの二次元配列を全て読み込みしなければならない為、こちらも効率が悪いような感じがします。
説明不足や文章が分かり難い場合は気軽に質問してください。どうかよろしくお願いします
RPGで言う村人と動くマップチップについて
Re:RPGで言う村人と動くマップチップについて
まぁ、色々方法はあるんですが。
1.マップチップのパーツ番号を仮想化する方法。
マッチチップのパーツ番号をテーブル番号と見立てることで、マップパーツテーブルを参照してから表示するようにする方式。マップパーツテーブルに書かれているパーツ番号を書き換えるだけでアニメ出来る。
●マップチップ
01022340
02044440
00544000
●マップパーツテーブル
[0]0
[1]1
[2]2
[3]3
[4]4 ← ここだけ4,6,8などに変化。
[5]5
●実際の表示。[4]が6なら
01022360
02066660
00566000
2.マップに大規模なコピペをする方法。
アニメーションするブロックだけの別マップを作っておいて、そこからアニメ番号順にブロック毎にコピーしてくる方式。パッチ式とも言う。
●マップチップ
01022340
02044440
00544000
●別マップチップ。これをマップにコピペする。
[0]
2234
4444
4400
[1]
2236
6666
6600
[2]
2238
8888
8800
1.マップチップのパーツ番号を仮想化する方法。
マッチチップのパーツ番号をテーブル番号と見立てることで、マップパーツテーブルを参照してから表示するようにする方式。マップパーツテーブルに書かれているパーツ番号を書き換えるだけでアニメ出来る。
●マップチップ
01022340
02044440
00544000
●マップパーツテーブル
[0]0
[1]1
[2]2
[3]3
[4]4 ← ここだけ4,6,8などに変化。
[5]5
●実際の表示。[4]が6なら
01022360
02066660
00566000
2.マップに大規模なコピペをする方法。
アニメーションするブロックだけの別マップを作っておいて、そこからアニメ番号順にブロック毎にコピーしてくる方式。パッチ式とも言う。
●マップチップ
01022340
02044440
00544000
●別マップチップ。これをマップにコピペする。
[0]
2234
4444
4400
[1]
2236
6666
6600
[2]
2238
8888
8800
Re:RPGで言う村人と動くマップチップについて
softyaさんお答えありがとうございます。
マップチップのパーツ番号を仮想化する方法とパッチ式ですか。
とても参考になりました。
パッチ式など良く調べてからプログラミングに活かしたいと思います。
マップチップのパーツ番号を仮想化する方法とパッチ式ですか。
とても参考になりました。
パッチ式など良く調べてからプログラミングに活かしたいと思います。
Re:RPGで言う村人と動くマップチップについて
どちらも、古典的な手法ですので速度的には問題ないはずです。
※ この手法は、8ビットパソコンMSXやファミコン時代から使われています。あとパレットアニメと言う古典手法もありますが、DirectXではかえって難しいので解説しませんでした。
あと書き忘れましたが、村人とかはキャラクタとしてマップと別に描画した方が良いです。
「ゲームプログラミングの館」の20章から22章に書かれていることを自キャラでは村人に適用すれば良いわけで、村人はキー入力ではなくAIか適当なアルゴリズムで移動させると言う点が違うだけです。
※ この手法は、8ビットパソコンMSXやファミコン時代から使われています。あとパレットアニメと言う古典手法もありますが、DirectXではかえって難しいので解説しませんでした。
あと書き忘れましたが、村人とかはキャラクタとしてマップと別に描画した方が良いです。
「ゲームプログラミングの館」の20章から22章に書かれていることを自キャラでは村人に適用すれば良いわけで、村人はキー入力ではなくAIか適当なアルゴリズムで移動させると言う点が違うだけです。