[Unityで2Dゲームを作る]WEBGLでよくある積むタイプのゲームを作りました

Unity楽しいです。

以前別の担当者ですが、Unityに関する記事を書いていますね。

Unityに対する知識を深める

Unityといえば3Dゲームの印象が強いかと思いますが、
今回は2Dゲームを作ります。

まずは成果物から

四の五の言わず、まずは成果物ですね。

http://contents.glodia.com/unity_20180707/

なんとわくわくするゲーム画面でしょうか。
これは早速遊んでみるしかありませんね。

さて、、、だいぶ重いです。
WEBGL自体が重いのか、私のブラウザが重いのか。

またスマホからの場合は警告が出るので、以下の画像の部分をクリックして進めてください。
まだUnityのWebGLが正式にスマホしてないみたいですね。

ちなみに、私の場合、スマホだとプレイできるまで5分くらいかかりました。
ちょっとこのままだと厳しいですね。
みんなどうしてるんだろう。

ソースコード

https://github.com/spinachmedia/test_unity

ここです。

感想

Unity不慣れなの私がまず思ったこと。

Main関数どこに書くの?

なんかもう、古いんですかね。Main関数って考え方。
「Unity Main関数」で調べてもドストライクなのが出てこない。 5,6年前にAndroidのゲームをSurfaceViewで作っていた頃は思いっきりMain関数ありましたが。。

はい。

どうやらUnityではスクリプトは何かしらのオブジェクトに紐づくようで、
ひとまず「GameManager」というオブジェクトを作成して
そこにMain関数に相当するスクリプトを紐づけました。

オブジェクトとソースコード内の変数との紐づけ方は?

XCodeもAndroidStudioもVisualStudioも、
結局はGUIで作成した要素とソースコードをどうやって紐づけるんですか?
という部分さえわかってしまえば大抵のことは何とかなると思ってます。

プラットフォームによって一番違うのって多分そこだと思うので。
あとはまぁライフサイクルとか、Dispacherとか…Delegateとか…。

工程は以下ですね。

  1. 変数を宣言する。
  2. オブジェクトを作る。
  3. Inspecterで、No Objectの部分を選んでオブジェクトと紐づける。

最初日本語が表示されなかった

MacのUnityで開発。
開発中は問題なかったが、WEBGLで吐き出したあと、WEBサーバに配置してブラウザで確認したところ
日本語テキストが一切表示されなかった。

調べてみたらフォントの問題とのこと。

以下のURLを参考に解消。
助かりました。
https://qiita.com/tsubaki_t1/items/93e4b91b830729cd93a4

WEBGLのBuildに5分くらいかかる

長い…。 でも最終出力だけ考えればいいからまぁいいといえばいいんですが、 フォントが足りてなくて再ビルドしたので、ちょっと面倒でした。 仕方ないか…。仕方ないのかな…?

物理演算すごい

いまさらすぎて本当にしょうもないのですが、物理演算すごいですね。
実装不要、GUI上でぽちぽちするだけで衝突判定、重力加速度、反発係数、摩擦係数などの設定ができる。
Collider(コライダー)良いですね。

特に便利だなと思ったのがこれですね。
PoligonCollider。 なんと多角形で衝突判定ができます。

こんな複雑な当たり判定もGUI上でちょいちょいといけるのです。
ちゃんと右上の欠けてるところとか、見た目どおりの判定にしてるんです。

あの有名な動物を積むゲームもきっとこの仕組を使ってるんだろうなと思いました。

さいごに

総製作時間、4時間くらいですね。
初Unityでしたが、なんとかいけるものですね。

2Dも3Dのノリで実装できるのが感覚的に新鮮でした。

いつかメトロイドヴァニアを作ってみたいです。
途方もない時間と労力が必要ですが…。

以上です。

高橋 洋樹

WEBアプリケーション、スマートフォンアプリケーションエンジニア。
フロントエンドに関心大。
趣味でゲーム作ったり、つくらなかったり。

※記事の内容は保証はしておりません(執筆時期や実施環境により挙動が変わるものがある為)。
別途検証してご利用いただくことをおすすめいたします。