Rpg Map Editorであそんでみる
はい、今回遊んでみたのはこちらのアセット
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を指定すると消すことができます
とりあえず今回はここまで〜