Unity
ゲーム制作
Unity2D
2D格闘

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

More than 1 year has passed since last update.

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

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

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

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

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

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

201701031713c2.png

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

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

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

201701052313a4.png

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

201701071155a3.png
4コマ・アニメが描かれた画像(=スプライト)から、1枚をスライス(切り抜く)する様子

201701061105d16.png

2Dでもポリゴンは使える。やはり ペラペラの紙のようだ。
201701061813b1.png

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

(2位) カメラが、ディスプレイの1ドットを 1ピクセルに対応づけるような努力はしてくれる

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

201701031713j3.png

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

20170604n4_dot.png

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

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

(3位) 2Dでは、カメラの原点は左下になる

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

201701041320h6.png

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

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

(4位) 2D、3D 関係なく、テキストやHPバーといった画面表示系統は ゲーム空間とは別に置いてある

201701051349h3.png

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

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

201701041320f2.png

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

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

201701031713l1.png

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

そういう後ろで動いている仕掛けを知らず いっしょうけんめい画面を見ながら配置して 実行してみると 次のようなことになる。
201701041106o1.png

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

201701041320a1.png

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

201701051349f1b2.png

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

201701041320j1.png

(5位) フレーム単位のアクション

3Dなら、腕とか 剣とか振れば当たるのだが、2Dでは 1枚の画像なのだった。

201701081119a9.png

腕とか、足とか、当たり判定は どこにあるのだろう?
201701100936a16.png
自分で設定しなければいけない。

201701101323a1.png
すると、1フレーム単位で 腕はここ、といった当たり判定を付けていくことになる。
これも 2D らしいところだろう。

201701101323a12.png

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

201701201027gif26.gif

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

2Dならではの手間と言える。

(6位)2D格闘制作の情報の少なさ

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

Unityで 2D格闘を完成させた例は 2015年当時はゼロだったようだ。

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

(7位)グラフィックを用意すること

20170604a1.png

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

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

おわりに

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

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