Unity初心者向け！MagicaVoxelの素材を使って、2.5Dのゲームを作ろう①〜素材を書き出す編〜

こんにちは。



まずはこちらをご覧いただきたい:raised_hand:

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">UnityとMagicavoxelで。<br>3Dのようにみえますが、実は2Dです。<a href="https://twitter.com/hashtag/Unity?src=hash&amp;ref_src=twsrc%5Etfw">#Unity</a> <a href="https://twitter.com/hashtag/voxelart?src=hash&amp;ref_src=twsrc%5Etfw">#voxelart</a> <a href="https://t.co/P02HQpzbRH">pic.twitter.com/P02HQpzbRH</a></p>&mdash; hayu (@hayu_dev) <a href="https://twitter.com/hayu_dev/status/1048251512219086848?ref_src=twsrc%5Etfw">2018年10月5日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


みなさんは2.5Dゲームというものをご存知でしょうか。
2D/3Dゲームは言わずもがなですが、その間に属しているものが2.5Dゲームです。　　
2.5Dゲームにもまた種類があるのですが、今回はIsometricと呼ばれているものを指していこうと思います。

#Isometric（アイサメトリック） 2.5Dゲームとは

簡潔に言うと「3Dにみえる2Dゲーム」と私は捉えています。
代表的なものですと、クラッシュ・オブ・クランなどがあげられます。こちらは一部3D素材ですが、ほとんどの画像は2Dイラストとして書き出されており、3Dに見えるように配置されています。
こういった視点のものはクォータービューとも言われています。

![スクリーンショット 2018-12-01 11.31.48.png](https://qiita-image-store.s3.amazonaws.com/0/311402/f4e9d34b-cf11-002b-345b-bb86aca9ad68.png)
（画像は公式ストアより引用）


###（余談）なぜ3Dでなく2.5Dを選ぶのか
~~３Dのキャラクターを動かしたら私物のPCが悲鳴を上げた~~ かわいいからです:relaxed:
~~だれか私にUnityがスラッスラ動くPCをかってください~~ クォータービューかわいいからです:heart_eyes:

#素材はMagicavoxelで作成
Magicavoxelとはボクセルと呼ばれる3Dドット絵のモデリング/レンダリングツールです。
[Magicavoxel公式サイト](https://ephtracy.github.io/)
Magicavoxelの使い方については記事が沢山存在していますので、今回の記事では省略させていただきます。

#モデリングしたキャラクターを書き出す
今回はこちらのキャラクターをモデリングしました。
![snap2018-12-01-12-28-14.png](https://qiita-image-store.s3.amazonaws.com/0/311402/15d5daca-d907-4aa0-0673-0f485df48e06.png)

ゲーム画面での向きは上図のような状態を持つとします。（Top,Right,Bottom,Left）
それぞれの状態の画像、つまり４つの画像が必要となるわけです。
また、ゲーム画面上で使う素材は背景が透過されている必要があります。

##４つの状態のキャラクターを書き出す
####透過設定
![スクリーンショット 2018-12-01 12.38.34.png](https://qiita-image-store.s3.amazonaws.com/0/311402/ae28cd20-c11e-a177-5599-5eb6875b0faf.png)

レンダリング設定は上図の設定をすることに注意してください。


####カメラ位置の固定
![スクリーンショット 2018-12-01 13.03.43.png](https://qiita-image-store.s3.amazonaws.com/0/311402/e8599401-068e-1053-cfe6-be8cf92e44e2.png)

また、「ここだ！」というカメラ位置がきまったらカメラの位置を保存することを忘れないでください。
カメラ位置の保存方法は上図のとおりです。「７」で保存後、カメラ位置をずらしてしまっても「８」を押すことで、保存したカメラ位置をロードすることができます。
まずはこのようにして、Bottom状態のキャラクターをレンダリング後カメラアイコンから撮影し、保存します。


####キャラクターの向きを変える。  
次にRight状態のキャラクターを書き出します。
Right状態にするには、キャラクターをZ軸にそって９０度回転させる必要があります。
![スクリーンショット 2018-12-01 12.46.13.png](https://qiita-image-store.s3.amazonaws.com/0/311402/3eb81825-309e-55d5-3993-6f72b537a20a.png)

EditツールのRot項目のZを選択することで、キャラクターを９０度回転させることができました。
このままRenderモードにしてキャラクターを書き出します。
同様に、Top、Left状態のキャラクターを書き出します。

####キャラクターの４枚の画像を１枚の画像にしておく
なぜ１枚の画像にしておくかは次回の記事で・・・
とりあえず下準備と思って用意しましょう。
画像の結合には、以下のサイトを利用しました。
[CSS Sprites Generator](https://www.toptal.com/developers/css/sprite-generator)

![スクリーンショット 2018-12-02 11.05.18.png](https://qiita-image-store.s3.amazonaws.com/0/311402/ceeb0084-2797-cd73-c336-35c756dc5bd2.png)
画面の右側に画像が出力されるので[DOWNLOAD]から画像を落とし込みます。

![css_sprites.png](https://qiita-image-store.s3.amazonaws.com/0/311402/c96f5ed2-1eb8-894c-fa27-188de98dcec5.png)

これにて、実際にUnityで使うキャラクターの画像を書き出すことができました！
同じカメラ角度で、地面やオブジェクトの画像も書き出してみます。
![snap2018-12-01-13-16-01.png](https://qiita-image-store.s3.amazonaws.com/0/311402/2299526b-8c73-d342-a6a2-525bb803720c.png)
壁とか
![snap2018-12-01-13-18-27.png](https://qiita-image-store.s3.amazonaws.com/0/311402/4b636928-2124-10cd-d79c-1a54948550ba.png)
地面とか


おつかれさまです！これにて素材は揃いました。
次回は、作成した画像をつかってゲーム画面に画像を配置していきます。それではまたこんど。