釣りがしたかった・・・

無性に釣りがしたくなったので作ろうかと思って・・・。
川のぬし釣りみたいなのがつくりたいな・・・。

##マップ作り
マップ作りはこちらのアセットを使用
<a href="https://www.assetstore.unity3d.com/jp/#!/content/25657" target="_blank">
![スクリーンショット 2016-05-16 16.43.15.png](https://qiita-image-store.s3.amazonaws.com/0/46444/6e8e34eb-5ce6-f8af-f4ba-ed2cded6817d.png)</a>

###パッケージをインポート
使い方のドキュメントはDocumentationフォルダに(英語だけど)
でものシーンも幾つかついているので見れば大体わかります。
<img width="228" alt="スクリーンショット 2016-05-16 15.42.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/a470ee0e-b931-940c-1f12-881226259f01.png">

###早速マップ作成
とりあえず簡単に新規シーンを作成
RpgMapEditor->AutoTileMap
<img width="262" alt="スクリーンショット 2016-05-16 16.28.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/9dff2a2a-6719-4422-bc24-b1deac623ed4.png">

ヒエラルキー上にオブジェクトができるのでインスペクタで設定します。
<img width="292" alt="スクリーンショット 2016-05-16 16.28.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/e6f16287-f977-311e-feed-bbfe012cd38a.png">

TileSetはすでに入っているやつを使います(Samples/Scenes/AutoTileSet)
MapDataは新規でつくるのでCreate

するとインスペクタ上がこんな感じになります。
<img width="198" alt="スクリーンショット 2016-05-16 16.30.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/4431f07c-8650-3c50-6547-49ff545d0082.png">

##Playボタンでマップをぬりぬり
Playボタンを押してあとは好きなのを選んで塗っていくだけ。
レイヤーも好きにわけられるし、くぐったりするものも作成可能です。
範囲選択でのコピーもできるし、連続したところは勝手にくっつけた状態で配置してくれます。
ぬりぬりしたらPlayを止めればOK
<img width="618" alt="スクリーンショット 2016-05-16 16.30.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/7b6d3b2c-9112-f05b-e0eb-dd8d596e261e.png">

とりあえずこんな感じでいいや。
<img width="380" alt="スクリーンショット 2016-05-16 16.31.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/c7964a96-4ea9-9afc-1bad-c41d81a3d478.png">

##とりあえずキャラを配置する
RpgMapEditor->Characterを実行
<img width="259" alt="スクリーンショット 2016-05-16 16.34.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/fefbef5a-6a91-febe-736f-6a44a9a8fbaa.png">

できたオブジェクトのインスペクタにキャラクターチップのSpriteをセットする。
キャラチップは<a href="http://usui.moo.jp/frame2.html" target="_blank">「臼井の会」</a>さんのものを使用しております。
これをセットするだけでもうセット完了!
<img width="302" alt="スクリーンショット 2016-05-16 16.51.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/f44ab57a-be59-fada-20ed-ced9d8f2834e.png">

##キャラクターを動くように
十字キーで動くように先ほどのオブジェクトにPlayerController.csをアタッチ
これをアタッチするだけで十字キーでキャラが動きます。

##カメラがキャラを追従する上に
PlayerCamera.prefabをヒエラルキーに配置
インスペクタからFollowObjectBehaviorのtargetをキャラクターにセットすれば完了
<img width="267" alt="スクリーンショット 2016-05-16 16.35.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/46444/cc1b5b31-f5a0-fb9e-be8a-cd7634a891b6.png">

画面の端の処理してないから外にもでれちゃうけどあっという間にここまで完了。
当たり判定もついてるからここまで１０分とかからずにできてしまうという!
<img src="http://ayumegu.daa.jp/img/Qiita/fishing1.gif">

これで下準備完了

##次は次は魚を表示しよう。。。
とおもったら飽きてしまいました

とりあえずやったところまで。
キャストして、魚の近くだと魚が逃げてくようにまでしました。
<img src="http://ayumegu.daa.jp/img/Qiita/Fish2.gif">

こちらScene画面。魚の動く目的地にgizmoを表示してわかりやすくしてます。
目的地に着いたら適当に移動させてます
地面には乗らないようにしてます。
<img src="http://ayumegu.daa.jp/img/Qiita/Fish3.gif">

作る上でよく使ったのが、world座標からtilemap上の座標を求めるとのと
tilemapからworld座標を求めること。

	// ワールド座標からタイルの位置を取得
	public static Vector2 GetWorldPosToTilePos(Vector3 pos)
	{
		int tile_x = Mathf.RoundToInt(pos.x  * 100f / autoTileMap.Tileset.TileWidth);
		int tile_y = Mathf.RoundToInt(-pos.y * 100f / autoTileMap.Tileset.TileHeight);
		return new Vector2(tile_x, tile_y);
	}

	// タイル座標からワールドの位置を取得
	public static Vector3 GetTilePosToWorldPos(int x, int y)
	{
		float xPos = x + 0.5f;
		float yPos = y + 0.5f;
		return new Vector3(xPos * autoTileMap.Tileset.TileWidth * 0.01f, -yPos * autoTileMap.Tileset.TileHeight * 0.01f, 0);
	}

こんな感じで変換してます。