Rpg Map Editorであそんでみる

ayumegu(プログラマー)
よろしくお願いします。

はい、今回遊んでみたのはこちらのアセット
Rpg Map Editor

こちらデモのスクリーンショット

どんなのが作れるかなどはWeb Demosを見るといいかと思います。
マップチップからマップの作成と便利なスクリプトがいくつもついています。
マップのジェネレータなどもあり、配置も便利機能満載です。
チップ自体にあたり判定、くぐりなど設定でいるので煩わしい設定ともおさらば。(下図)

##では早速簡単に使い方

空のシーンを作成し、ヒエラルキーからCreate Other->RpgMapEditor->AutoTileMap

作成されたAutoTileMapのインスペクター

とりあえずTileSetはサンプルで入っていたものをセットし、MapDataはCreateして保存先と名前を決定
Map Dataを作成したところ

Settingタブではサイズなどの設定
Paintタブでタイルをぬれます
Dataでインポートエクスポートとマップのジェネレートできます。

マップをジェネレートしたところ。お手軽

ではプレイヤーをとりあえず配置。
SampleのPrefabに入っているPlayerとPlayerCameraをヒエラルキーにドロップ

AutoTileMapのViewCameraにPlayerCameraを設定

PlayerCameraのターゲットにPlayerを設定

はい、これでもう十字キーで動いたりできます。

マップの配置の操作方法などはDocにあるので割愛

##クリックされた位置のタイル取得方法 クリックされたタイルの座標の取得は AutoTileMap.csのGetAutoTileメソッドで取得できます。

  • 第一引数:x
  • 第二引数:y
  • 第三引数:レイヤー番号

使用する前にusing の追加を忘れずに

using CreativeSpore.RpgMapEditor;
public AutoTileMap autoTileMap;
void Update () {
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Plane hPlane = new Plane(Vector3.forward, Vector3.zero);
float distance = 0;
if (hPlane.Raycast(ray, out distance))
{
Vector3 vPos = ray.GetPoint(distance);
int tile_x = (int)(vPos.x / AutoTileset.TileWorldWidth);
int tile_y = (int)(-vPos.y / AutoTileset.TileWorldHeight);
int gndTileType = autoTileMap.GetAutoTile( tile_x, tile_y, (int)AutoTileMap.eTileLayer.GROUND ).Type;
int gndOverlayTileType = autoTileMap.GetAutoTile( tile_x, tile_y, (int)AutoTileMap.eTileLayer.GROUND_OVERLAY ).Type;
int overlayTileType = autoTileMap.GetAutoTile( tile_x, tile_y, (int)AutoTileMap.eTileLayer.OVERLAY ).Type;

tile_x tile_yがクリックされたところの位置

##タイルのチップを変更する スクリプトからマップのチップ番号を変更するときは
AutoTileMap.csのSetAutoTileメソッドで変更できます

autoTileMap.SetAutoTile(i, j, 0, (int)AutoTileMap.eTileLayer.GROUND);
  • 第一引数:x
  • 第二引数:y
  • 第三引数:チップ番号
  • 第四引数:レイヤー番号

自動的に左右上下などのタイルとくっつけたりしてくれるので便利です。
ちなみにチップ番号に-1を指定すると消すことができます

とりあえず今回はここまで〜