Unityで2Dを選ぶとき、3Dとは何が違うのか？2D格闘制作振り返り

画像アップロード上限があるようなので　全記事を書き直すことにした。

# Unity で選べる、2D と 3D は何が違うのか？

軽く　かいつまんで並べていく。

- 以前に自分で2Dプログラミングを組んでいて、Unityの2Dプログラミングに触れたときにとまどうこと
- 3Dに比べて、2Dにしたから起きる難しさ

などについて　２か月分の記事を１記事に圧縮してランキング形式にした。

##**（１位）** 2D を選択すると、ゲーム空間に置けるのは ほぼ スプライト（いわゆる画像）

![201701031713c2.png](https://qiita-image-store.s3.amazonaws.com/0/159417/5a082796-5ac5-e006-241d-c82c678c02ae.png)

2Dでは、こういう 紙 のようなペラペラしたものを置いていく。
空間は３Ｄなので　もちろん回転とかもできる。

Unity2Dは　２Ｄゲームを作るものと　捉えるよりは、
３Ｄ空間に　ペーパーを置いていく編集モードのようなもの、と考えた方が　認識が早くなるのではないか。

ただし、回転した紙を　置いておいても　キャラクターは突き抜けて落ちていく。

![201701052313a4.png](https://qiita-image-store.s3.amazonaws.com/0/159417/aa605e46-068e-1994-a978-e78c4b72371f.png)

このように　四角などを　裏に置いておいて　地面にするところが　２Ｄらしい。

![201701071155a3.png](https://qiita-image-store.s3.amazonaws.com/0/159417/3fc25be9-d5b5-a4d9-efe3-35e17db9a4df.png)
４コマ・アニメが描かれた画像（＝スプライト）から、１枚をスライス（切り抜く）する様子

![201701061105d16.png](https://qiita-image-store.s3.amazonaws.com/0/159417/ffa94042-86e6-d22a-b238-1fc9cea2ad85.png)

２Ｄでもポリゴンは使える。やはり　ペラペラの紙のようだ。
![201701061813b1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/9f77e65d-dd6a-91d3-e358-9cc4c41a1ba3.png)

当たり判定は Unity が計算してくれる。


##**（２位）** カメラが、ディスプレイの１ドットを　１ピクセルに対応づけるような努力はしてくれる

ドット絵、またはピクセルアートのような　ドットがくっきりとしたゲームにしようと思った場合、画像に初期設定でかかっているアンチエイリアシングや、拡大縮小時の　ぼかし　の機能を切る必要がある。

![201701031713j3.png](https://qiita-image-store.s3.amazonaws.com/0/159417/16b37c8a-ce8e-9d05-e041-f813256cea06.png)

たしかに輪郭は　なめらかだし、拡大縮小しても　なめらか。こっちを初期設定にしているのも分かる。
しかし　ファミコン／スーパーファミコン世代としては　わざわざ　ギザギザ　にしたい。

![20170604n4_dot.png](https://qiita-image-store.s3.amazonaws.com/0/159417/39ce2794-472e-a586-47d4-e212a4e24845.png)

ドットが　キザキザ　するように少し設定したもの。

ドットサイズが合っていないんだが、これは　きふわらべを 2.5倍表示しているから。
Unityを使っている内にあとで気づいたことなので、仕様変更が厳しくなった。
2倍とか3倍とかキリのいい数字にすればいい気もするが、できれば　最初から把握しておきたい。

##**（３位）** 2Dでは、カメラの原点は左下になる

2Dゲームをスクロールさせたいときに、Unityにはカメラがある、ということは　古いWindowsプログラミングをなまじ　かじっていると、**あれっ？** と思うところかもしれない。

![201701041320h6.png](https://qiita-image-store.s3.amazonaws.com/0/159417/a6deceb5-4424-8b39-bc38-7ae5d27464b0.png)

Unityのゲーム空間は　数学の座標と同じ　左下原点。

2Dゲームでも、背景、というかステージを右に進んでいく（→）ようにスクロールさせようと思ったら、ステージの地形などを左へ（←）動かすのではなく、カメラを右に（→）動かせばいい。

##**（４位）** 2D、3D 関係なく、テキストやHPバーといった画面表示系統は ゲーム空間とは別に置いてある
![201701051349h3.png](https://qiita-image-store.s3.amazonaws.com/0/159417/ce99e87f-e8bc-62ae-cecf-5fe7e940338a.png)

ＨＰメーターや　スコア表示は、ゲーム空間の地面に　置いてあると考えるよりは、
Canvas というものが　カメラのレンズのような場所に貼りついていて、　ディスプレイの枠を気にしながら　位置を決めることができると捉えてはどうか。

ＰＣなら 1280x1024の横長のディスプレイだったり、スマホなら960x480の縦長のディスプレイだったり、アスペクト比も　さまざまかと思うが、

![201701041320f2.png](https://qiita-image-store.s3.amazonaws.com/0/159417/31bbff45-4788-711d-1dec-138f7746992d.png)


画面表示類は　上の枠からどれほど離れているか、といった設定をする　アンカー　や、画像のどのあたりを原点にするかといった　ピボット　などを設定でき、
おそらく　スマホの　横、縦　回転に対応したりするのに使われるのかもしれない。

固定にすることもできる。

![201701031713l1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/f14b1e16-04c6-9549-6e84-b499733aca99.png)

ＰＣゲーでは　アスペクト比（ヨコ：タテ）が同じで　解像度が違うだけ、といったディスプレイもあるだろう。
このような　台詞のウィンドウは　何ピクセルというよりは、画面の中心から見て下の方、といった配置にしたいこともある。

そういう後ろで動いている仕掛けを知らず　いっしょうけんめい画面を見ながら配置して　実行してみると　次のようなことになる。
![201701041106o1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/0349d43e-787a-c56f-7cab-7536895ec335.png)

それぐらい、分かるだろう　と思われるだろう。

![201701041320a1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/8c24f5a6-c348-39e6-d9b9-fa7d49153925.png)

このようなことが起こったときは「Unity アンカー」「Unity ピボット」あたりでググってほしい。

![201701051349f1b2.png](https://qiita-image-store.s3.amazonaws.com/0/159417/6fe0e2b8-bc5e-31d8-cfdf-9898d627f4e7.png)


ちなみに Canvas は、原点に　おっこちているので　カメラで見に行くこともできる。

![201701041320j1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/f128be84-e26e-9c12-51b4-65d7c1d3147f.png)

#**（５位）** フレーム単位のアクション

３Ｄなら、腕とか　剣とか振れば当たるのだが、２Ｄでは　１枚の画像なのだった。

![201701081119a9.png](https://qiita-image-store.s3.amazonaws.com/0/159417/86aad027-4e6c-ef41-81f2-4e784ba5fa8a.png)

腕とか、足とか、当たり判定は　どこにあるのだろう？
![201701100936a16.png](https://qiita-image-store.s3.amazonaws.com/0/159417/07b4b5de-109f-8c2e-e762-e0b2703c31f0.png)
自分で設定しなければいけない。

![201701101323a1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/6a3c16b9-fc71-0392-7159-8adabe3c7c01.png)
すると、１フレーム単位で　腕はここ、といった当たり判定を付けていくことになる。
これも　２Ｄ　らしいところだろう。

![201701101323a12.png](https://qiita-image-store.s3.amazonaws.com/0/159417/cff2e9ca-312c-1fb1-7a3f-b75d001c9811.png)

画像に当たり判定を描いておくと　抽出してくれるプログラムも自作した。

![201701201027gif26.gif](https://qiita-image-store.s3.amazonaws.com/0/159417/ee25dfbe-f2d9-899c-b670-de3ca9b0a217.gif)



最初から　３Ｄ　で作っておけば、このヒット・ボックス（上の動画の赤色の部分）をわざわざ作る手間は　省けるだろう。

２Ｄならではの手間と言える。

#（６位）2D格闘制作の情報の少なさ

「Unityでスト２を作ろうと思ったら、すでにあったでござるよの巻」
http://qiita.com/muzudho1/items/20851147a165bb9ec344

Unityで ２Ｄ格闘を完成させた例は　２０１５年当時はゼロだったようだ。

２Ｄアクションは珍しくないのに比べ、２Ｄ格闘ゲームになると
３Ｄ格闘に比べて、２Ｄ格闘の情報が少ないのも　２Ｄが持っている特長だろう。

#（７位）グラフィックを用意すること

![20170604a1.png](https://qiita-image-store.s3.amazonaws.com/0/159417/e080f3ef-5d75-37f3-0c64-2c77a44cb176.png)

- ドット絵を描く
- ３Ｄを動かして　フレーム何枚の　アニメーションに間引きする
- イラストでアニメーションを描いてから　縮小して　ドット絵に変換する

など、なんでもいいので　画像を用意する必要がある。

# おわりに

今回は、2D、3D の観点で　まとめてみた。

この他に Unityエディターの基本操作 でも大きなランキングが作れるかと思う。