少イ左の部屋_
ドット絵とゲーム制作など
2019/05/19 Sun.
Tonyu2でマップの遠景・近景を作りたい 
いったん奥の景色を「Base」としてタイルを敷き詰めた後で

↓
手前の景色を「On」で乗せることができるのです!

このため初めから「景色が重なったタイル」を作らなくても、
組み合わせで背景のバリエーションを出すことができるようになりました。
で、よっしゃプレイするぞ!っつってやってみると

あくまで背景かい!!!っていう・・・
キャラクタの手前に来ませんよね。当然ですね。
最初やった時はオブジェクトよりも絶対手前に来るのがONなのかなと思ってました。
Tonyuのサイトに記載されたマニュアルはこれだけで
マップをゲーム実行時にもレイヤに分けて動かしたい時の方法がわかりにくいかと思ったので
いったん自分で実装しているときの方法を書きます。
まず、いったん1枚のmapを作成し
遠景をBase、近景をOnで作りこんでしまい、そのマップファイルを複製します。

で、近景のみのファイルと遠景のみのファイルにするため、
それぞれOnのレイヤをすべて消す、Baseのレイヤをすべて消す、という作業をします。


この作り方をしないとマップごとの相対位置がわからないので、
どこに近景のタイルを置けばいいのか全く分からなくなる。
で、マップを読み込むときにそれぞれzOrderを変えて取り込む
例えば以下の例だと遠景が10、近景が-10 (キャラは0にしてます)

そうするとこんな感じで手前の景色の裏にキャラが来て、その裏に背景が来る、
という状態ができます。

もっとスマートなやり方があれば知りたい。
« 【完成】UndeadBuster進捗
Tonyu2使い方 »
コメント
配列を使ってみてはいかがでしょうか?
Tonyu2使用者なのですが、自分はプロジェクト内でマップを描いています。
投稿していたMapEditorはまだ修正を掛けていないのですが、最近2次元配列で保存するとスッキリするのではと感じ組んだので、簡単に載せておきます。
①new Map{};でマップを作成
②.setAt()、.setOnAt()を使ってマップを描画
③配列を作成し、前後を二次元配列で保存していく。
k=0;map_files=[];
for(i=0;i<横のチップ数;i++){
for(j=0;j<縦のチップ数;j++){
map_files[k]=new Array(2);//これで二次元配列にします。
front_pat= .getOn(i,j)-$pat_;
if(front_pat>=0)map_files[k][0]=front_pat; else map_files[k][0]=-1;
//背面のマップ収納は省略します。
}}
④file.obj(map_files);でtxtファイルに保存する
って感じです。
便利な点はマップファイルが1つで済む、Tonyu1にあったような、画像を後から追加すると点が出てくるといったことが無くなる(描画時は、配列の中身が-1出ない時のみ描画するようにします。)、描画方法をきちんとすれば、1のように5×5やドラックで連続配置なども可能、プログラムを組めば前後の描画を入れ替えたりinputBoxで画像番号を一気に変更、マップ画像の名称を好きにつけられるなど、様々あります。
描画は現在やられているように、背面描画→オブジェクト配置→前面描画でやりますとうまくいくかと思います。どうやら、配置した順で同レイヤーでも階層が決まるようで、後から配置するほど表に出てくるようですので。
めちゃくちゃ長くなってしまい申し訳ありません。
URL | もぐら #-
2021/05/28 00:34 | edit
アドバイスありがとうございました
確かに配列で一旦取り込んでから描画すればマップは一枚でいいですね。マップが多い、マップの修正が多い場合などで参考にさせて戴きます。
URL | しょさ #USanPCEI
2021/06/01 18:51 | edit
| h o m e |