Mitz_Unityのブログ

より良い開発者を目指して

unity1週間ゲームジャムで初めて2Dゲームを公開したよ

皆様こんにちは、MarkOnのみっつです。

今回は、UnityRoomのnaichiさんが主催している「Unity 1週間ゲームジャム」に参加致しました。

・1週間ゲームジャムとは?

あるテーマが提示され、それに沿った内容のゲームをUniyで開発し、WebGL形式でアップロードします。

テーマは月曜日の0時に発表され、期限は日曜の20時までの1週間となっております。

 

・今回のテーマは「当てる」

今回の期間(2018-02-19 〜 2018-02-25)のテーマは「当てる」でした。

ひと言で「当てる」といっても、「的に当てる」や「正解を当てる」など様々な意味合いを思いつきます。

実際、参加されている皆様は「答えを当てる」という意味で使っていたり(占いや彼女が怒っている理由)、物理的に「物をこちらから当てる」ゲーム(野球ゲームなど)と、様々な種類のゲームが公開されており(150以上!)、とても興味深いです。

では、私は何を作ったかというと……

 

f:id:Mitz_Unity:20180226205110j:plain

耳当てあてよう | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 

何を血迷ったか「耳当てを当てるゲーム」を作りました。

「耳当てを耳に当てる」という意味と、「どのような形が適切か当てる」という意味でできてます。

 

・開発の経緯

そもそもなんでこんなもの作ろうと思ったかと言うと……

(ごはん食べながら)

「当てる」って色々できそうだよなー。でも思いつかない……

→この季節寒いから「耳当て」してる人もいるだろう

→耳当てを当てるっていってもどんなのだろう。メイドインワリオ的な、タイミング良く耳当てを当てるゲームにするか?だったらキャラクターはどんなものにすればいいんだろう。

→(もわもわもわ)待てよ。そもそも人間以外に"あの"耳当てって使えるのか?たとえばエルフ耳の人なんてはみ出るんじゃないのか?

→よし、これにしよう!

 

そうして家で書いたのが下の雑ぅーなメモ。

f:id:Mitz_Unity:20180226205635j:plain

 

_人人 人人人_
> いや     <

> 耳       <

>  どこやねん<
 ̄Y^Y^Y^Y^Y^Y ̄

 

そしてUnityにおこしてみる。

以下、ベースの画像を描いて配置してみたモック。

f:id:Mitz_Unity:20180226210211j:plain

f:id:Mitz_Unity:20180226210227j:plain

 

素っ裸のハゲ頭が耳当てをつけてもらって喜んでいるというどう見ても変態な構図ができました。

ちなみにSAIで描いてます。

ホントだったらSpriteは複数の画像をまとめて1つのファイルに格納してUnityで分割するのが普通ですが、今回はパーツごとに画像ファイルを切り出しています。

その為、ファイルの数がおぞましいことに。。。

f:id:Mitz_Unity:20180226210758j:plain

2Dゲーを作るのは始めてだったので、今回は一旦ゲームの形として完成させることを目指しました。

(ちなみに、〇×マークはいらすとやの物です。)

かわいいフリー素材集 いらすとや

 

・技術的な話

今回のゲームは以下の流れで構成されています。

ーーーーーーーーーーーーーーーーーーーーーー

①ゲームを初期化する。

→スコアを0に、残り時間を60にする。

 

②オブジェクトを生成する。

→ボタンは予め表示。

→人間オブジェクト(人間、エルフ、鬼、ウサギ)を生成する。

オブジェクトはそれぞれPrefab化してあり、プロパティのGameObject[]配列に格納。

その配列から、ランダムに1つのインスタンスを生成する(連続して同じオブジェクトが表示されないように、再生成するまでに、生成した番号は保持する)

 

③プレイヤーがボタンを押す。

ワイヤーボタンなら、指定座標にワイヤーオブジェクトを生成(これもPrefab)。

カバーボタンなら、指定座標にカバーオブジェクトを生成(これもPrefab)。

いちど押したボタンをもう一回押すと、対応したオブジェクトを削除してOFFになる。

同じ種類の別のボタンが押されていた時、そのボタンは押せない。

カバー、ワイヤーともに押されていた場合は、「決定ボタン」をActiveにする。

 

④決定ボタンを押す。

カバーとワイヤーを組み合わせたものを子として持つGameObjectを生成し、表示されている人間オブジェクトのインスタンスに答えがあっているか問い合わせる。

それぞれの人間Prefabには予め、答えの組み合わせのオブジェクトの種類(今回はオブジェクト名で指定しているが、タグやSendMessage()が望ましいと思われる)を設定しており、成否(bool型)を返す。

成否を受け取ったゲーム管理スクリプトは、成否に応じて〇×を出力する(Activeにする)。

[〇だった場合]

・〇マークを表示(SetActive)

・すぽっとキャラクターにはまる演出(といってもRigidBody2Dを付与してるだけのガバガバ仕様)

・成功時の顔を表示

・スコアを加算

 

[×だった場合]

・×マークを表示

・失敗時の顔を表示

 

その後、②に戻る。

時間が0になったら終了し、結果表示シーンに移動する。

(シーン遷移しても参照できるように、スコアはstaticで保持)

ーーーーーーーーーーーーーーーーーーーーーー

 

f:id:Mitz_Unity:20180226212521j:plain

 

最初は黄色いチェックの背景だったのですが、なんか微妙だったので暗い夜っぽい色をベタ塗りしたうえにパーティクルを散りばめて終わり。

f:id:Mitz_Unity:20180226212801j:plain

 

こういった具合です。

 

・所感

こんな簡単なゲームですが、やはりゲーム1本として完成させるには相当な労力がかかる。ということは分かりました。結局アップロードもギリギリになっちゃったし。

始めに描いた構想絵でもある通り、本当はもっと色んな種類のキャラクターを出して、種類が多いハードモードも作る予定だったのですが、2Dゲームは描く枚数が多いということを体で実感しました……今後の作業見積の参考にします。。。

 

そしていざWebGLにビルドしてアップロードしてみたところ……描画周りでバグを確認しております。

修正し再度アップロードしたらお知らせいたします。

 

以上