Re: マップのスクロール処理について ( No.1 ) |
- 名前:かたぱると 日時:2008/05/13 12:40
とりあえずDXライブラリサンプルプログラムのNo.4はご覧になられた後でしょうか?
<マップスクロール基本>
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4
|
Re: マップのスクロール処理について ( No.2 ) |
- 名前:overdo 日時:2008/05/14 03:54
レスありがとうございます。はい。参考にさせていただいてます。
サンプルは(どのサンプルでもそうなのですが)移動の度に毎回画面を全て作成し直していますので、
ある程度画面が移動したらその先の足りない部分をまとめて読むような処理にして、その時に今まで
作成しているマップ画像を有効利用の為に合わせることが出来ないかなと思ったのです。
そうすると処理方法もマップのスクロールによりチップの描画位置をズラすのではなく、画面に反映
したい位置を矩形で指定して裏画面にコピーするような形になるのかなぁと思いまして・・・。
ちなみに3×3の9画面分をマップチップで予め作成しておいて、それを座標をズラしながら画面に
表示するにはどうすればいいのでしょうか?
すみませんが、宜しくお願いします。
|
Re: マップのスクロール処理について ( No.3 ) |
- 名前:かたぱると 日時:2008/05/14 18:11
個人的な見解を書きます。
まず、9画面分の画像データを先に作成して必要部分を切り出して描画、という手法ですが
おそらくできるでしょう。
しかし、あまりに無駄が多すぎる為にオススメはできません。
主な理由として
・せっかくマップチップを使っているのに9画面分グラフィックを二次作成するのは本末転倒
・9画面分のグラフィックを作成するのはメモリの無駄遣い
等、無駄が多すぎると思います。
マップチップを利用しているのであれば
マップデータを更新する手法のほうが処理もメモリにもやさしいかと思います。
1例をあげるとすると
1つの数字を1画面として、
@ABCD
EFGHI
JKLMN
OPQRS
というような全体マップデータがあるとして
現在7の位置にいるとしたら
@AB
EFG
JKL
のマップデータをプログラム上に持ち、Fをフォーカスとしてサンプル4と同じ手法で描画を行い、
→に移動してフォーカスがGの位置に入った場合はマップデータのリロードを行い
ABC
FGH
KLM
のマップデータに更新してフォーカスをGの左端へ更新するほうが自然ではないかと思います。
32×32のマップチップで640×480の画面だとすると
9画面分のマップデータは
60×45とそれほど大きくないので現実的かと。
ドラクエ的に世界の端が繋がっているのであれば
NJK
SOP
D@A
みたいに表現することも可能ですしね。
|
Re: マップのスクロール処理について ( No.4 ) |
- 名前:overdo 日時:2008/05/16 03:46
レスが遅くなりすみません。
おっしゃる通り、無駄ということもあり1画面分のデータのみ
作成しながらスクロールするようにしました。
スクロール先の画面余白1チップ分を並べ(全画面書き直し)ながらキャラを
中心として上下左右へ移動させるところまで作りました(更に上下左右ループ)。
(説明されてるのはファミコンのハイドライド風だというのは承知の上で)
余談ですが、作った後、大昔のPCでのRPGをYouTubeで見てたのですが、画面の中心付近
はアソビ(多少動いてもスクロールしない)部分があるのが多いですね。
ウロチョロしても常にマップが動かないのはちょっとした心配りな気がしました。
・・・そうしようかなと思っただけです。
ありがとうございました。
分からないことがあればちょくちょく伺いますので宜しくお願いします。
|