画像アップロード上限があるようなので 全記事を書き直すことにした。
Unity で選べる、2D と 3D は何が違うのか?
軽く かいつまんで並べていく。
- 以前に自分で2Dプログラミングを組んでいて、Unityの2Dプログラミングに触れたときにとまどうこと
- 3Dに比べて、2Dにしたから起きる難しさ
などについて 2か月分の記事を1記事に圧縮してランキング形式にした。
##(1位) 2D を選択すると、ゲーム空間に置けるのは ほぼ スプライト(いわゆる画像)
2Dでは、こういう 紙 のようなペラペラしたものを置いていく。
空間は3Dなので もちろん回転とかもできる。
Unity2Dは 2Dゲームを作るものと 捉えるよりは、
3D空間に ペーパーを置いていく編集モードのようなもの、と考えた方が 認識が早くなるのではないか。
ただし、回転した紙を 置いておいても キャラクターは突き抜けて落ちていく。
このように 四角などを 裏に置いておいて 地面にするところが 2Dらしい。
4コマ・アニメが描かれた画像(=スプライト)から、1枚をスライス(切り抜く)する様子
当たり判定は Unity が計算してくれる。
##(2位) カメラが、ディスプレイの1ドットを 1ピクセルに対応づけるような努力はしてくれる
ドット絵、またはピクセルアートのような ドットがくっきりとしたゲームにしようと思った場合、画像に初期設定でかかっているアンチエイリアシングや、拡大縮小時の ぼかし の機能を切る必要がある。
たしかに輪郭は なめらかだし、拡大縮小しても なめらか。こっちを初期設定にしているのも分かる。
しかし ファミコン/スーパーファミコン世代としては わざわざ ギザギザ にしたい。
ドットが キザキザ するように少し設定したもの。
ドットサイズが合っていないんだが、これは きふわらべを 2.5倍表示しているから。
Unityを使っている内にあとで気づいたことなので、仕様変更が厳しくなった。
2倍とか3倍とかキリのいい数字にすればいい気もするが、できれば 最初から把握しておきたい。
##(3位) 2Dでは、カメラの原点は左下になる
2Dゲームをスクロールさせたいときに、Unityにはカメラがある、ということは 古いWindowsプログラミングをなまじ かじっていると、あれっ? と思うところかもしれない。
Unityのゲーム空間は 数学の座標と同じ 左下原点。
2Dゲームでも、背景、というかステージを右に進んでいく(→)ようにスクロールさせようと思ったら、ステージの地形などを左へ(←)動かすのではなく、カメラを右に(→)動かせばいい。
##(4位) 2D、3D 関係なく、テキストやHPバーといった画面表示系統は ゲーム空間とは別に置いてある
HPメーターや スコア表示は、ゲーム空間の地面に 置いてあると考えるよりは、
Canvas というものが カメラのレンズのような場所に貼りついていて、 ディスプレイの枠を気にしながら 位置を決めることができると捉えてはどうか。
PCなら 1280x1024の横長のディスプレイだったり、スマホなら960x480の縦長のディスプレイだったり、アスペクト比も さまざまかと思うが、
画面表示類は 上の枠からどれほど離れているか、といった設定をする アンカー や、画像のどのあたりを原点にするかといった ピボット などを設定でき、
おそらく スマホの 横、縦 回転に対応したりするのに使われるのかもしれない。
固定にすることもできる。
PCゲーでは アスペクト比(ヨコ:タテ)が同じで 解像度が違うだけ、といったディスプレイもあるだろう。
このような 台詞のウィンドウは 何ピクセルというよりは、画面の中心から見て下の方、といった配置にしたいこともある。
そういう後ろで動いている仕掛けを知らず いっしょうけんめい画面を見ながら配置して 実行してみると 次のようなことになる。
それぐらい、分かるだろう と思われるだろう。
このようなことが起こったときは「Unity アンカー」「Unity ピボット」あたりでググってほしい。
ちなみに Canvas は、原点に おっこちているので カメラで見に行くこともできる。
#(5位) フレーム単位のアクション
3Dなら、腕とか 剣とか振れば当たるのだが、2Dでは 1枚の画像なのだった。
腕とか、足とか、当たり判定は どこにあるのだろう?
自分で設定しなければいけない。
すると、1フレーム単位で 腕はここ、といった当たり判定を付けていくことになる。
これも 2D らしいところだろう。
画像に当たり判定を描いておくと 抽出してくれるプログラムも自作した。
最初から 3D で作っておけば、このヒット・ボックス(上の動画の赤色の部分)をわざわざ作る手間は 省けるだろう。
2Dならではの手間と言える。
#(6位)2D格闘制作の情報の少なさ
「Unityでスト2を作ろうと思ったら、すでにあったでござるよの巻」
http://qiita.com/muzudho1/items/20851147a165bb9ec344
Unityで 2D格闘を完成させた例は 2015年当時はゼロだったようだ。
2Dアクションは珍しくないのに比べ、2D格闘ゲームになると
3D格闘に比べて、2D格闘の情報が少ないのも 2Dが持っている特長だろう。
#(7位)グラフィックを用意すること
- ドット絵を描く
- 3Dを動かして フレーム何枚の アニメーションに間引きする
- イラストでアニメーションを描いてから 縮小して ドット絵に変換する
など、なんでもいいので 画像を用意する必要がある。
おわりに
今回は、2D、3D の観点で まとめてみた。
この他に Unityエディターの基本操作 でも大きなランキングが作れるかと思う。