ぐーるらいふ

底辺。

【Unity】無謀にもunity1week(二回目)に挑戦【転がる】

ghoul-life.hatenablog.com

第一回に引き続き、
先週の第二回unity1weekにチャレンジしてきた。

ころころフレンズ | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

なんだかんだでやっぱり血反吐を吐いたので、振り返って
次につなげたいと思う。

何作ろうか?

参加の目的としては「Unityの学習」にあり、
このチャレンジを通して一連の流れ(ゲームの遷移)について学びたいと思った。
ゲームの遷移とはゲーム内で行われる状態の遷移だ。
今回は

タイトル -> (ADV -> ゲーム待機 -> ゲーム) x n -> ゲームクリア

というシンプルな流れなんだけど、
ADVモードとゲームモードを行き来するのがよくある形なのかなと
思ってそこを勉強したかった。

後は

  • 平日は時間がない、土日でやりきれるボリューム
  • ADVがあるのでストーリーがある。
  • 遅刻はしない。制限時間を守る。

このぐらいものがいいなぁ、と漠然と考えていた。

ゲームは何にするか?

正直全然思いつかなかった。
twitterで周りの人の発想を見て感嘆の吐息を漏らすばかり。
とはいえ諦めたら何にもならん。誰でも思いつくような

「高いところから低いところへ球を転がす」

恥ずかしいけど、簡単なゲームでいい、完成まで作ってUnity力を少しでも上げるのだ。
と自分に言い聞かせた。

後はなるべく自力でやる。絵も自力だ。
これもやんなきゃ身につかないだろうな…と。

画面構成

ノートの端っこにでも画面を書いておく。

Sceneはもちろん1枚。
UIの切り替えで画面遷移を実現させる。
ADVモード用のUIとGame用のUIと画面中央にドーンとロゴを出すUIと
とUIを3つのグループに分けておくことを考えた。

この時はフレンズなんて頭の片隅にもありませんでした。

血反吐ポイントその1

ここが血反吐ポイントその1。
必要なものを洗い出しておいて作業量を見極める。

  • 雪山フィールド
  • ADVアイコン画
  • ロゴ
  • 立ちキャラ
  • プログラム

この内最もヤバそうなのは雪山フィールドだ。

雪山フィールドエディタ

terrainやらAsset Storeやらも頭をよぎったけど、
そこまで高機能じゃなくていいので自分で作ってみる。
これは平日の夜にちまちまやってた。


頂点を軽く動かすとそれに沿ったベゼルカーブが描かれて、そのベゼルカーブに沿った
Meshを構成してそれに沿ったオブジェクトを作ってあげればOKだ。
頂点を好きなだけ追加することが出来るが、位置は一つ一つマウスで動かしてあげる必要がある。

これをうねうねさせて作ったのが雪山フィールドだ。
デコレーションで木を乗せているが、これはMagical Voxelでささっと作って後乗せ。

これでフィールドは出来た。

フレンズ

金曜日のニコニコ一挙見てたらカッとなってしまった。
そしてやってしまった。後悔はしていない。

後は作っていくだけ

必要なUIを置いたり、オブジェクトを置いたりして
画面を組み立てていく。
その都度必要になるスクリプトを書いていく。

今回全体で作ったクラス関連図はこんな感じ。

f:id:ghoul_life:20170529170256p:plain

ゲームって割り込みで制御したくなるものが多いんで
分けるとアクセス周りがガバッちゃうんですよねぇ。
1つにまとめちゃうと鬼クラスの出来上がりだし。

見直して今後に使いまわせるようなものにしたい。
UIやSnowBallとかは特化しているので流用しにくいかもしれないけど。

血反吐ポイントその2

素材だ。画像素材。
ここが一番時間かかった。慣れの問題もあるけど。
もうとにかく描く。下手でも描く。
下手の横好きだけど楽しかった。もっと描きたい。

ロゴはジェネレーターをお借りしました。
https://aratama.github.io/kemonogen/

日曜日

エロマンガ先生~ヤバい○○まで見てTVを消して集中する。
朝日が眩しくなり、大分日が昇ったなとTVを改めて付けたら
さまぁ~ずの神ギモンってTVがやってた。

一通り出来て、結合して動かして
最後にお礼一枚絵を描いてビルドして提出。

そして夕飯素材を買いに行き、餃子を包む。

感想と次回

プレイして下さった方、本当にありがとう。
自分は普段Unity使ってませんので、難しかったですがあっという間でとても楽しかった。
そして次はもっと良いものを作ろうと沸々と湧いてくるものがあります。

目的としていたゲーム遷移だけど、

敵に攻撃した時、敵が全て倒れていたら、次の状態へ進む

という遷移も割りと噛み砕けて書けたんじゃないかと思う。
UpdateとEventとStateにしっかり分けたのが良かったかもしれない。
ちょっとゲームの遷移についてググって調べてみたり本を読んでみよう。

次も頑張ります。次のお題は何だろうなぁ。

やっときたいこと

黒画面がフェードイン・フェードアウトをさっと出来るスクリプト用意しておきたい。
コールバック付与出来るやつで。ステージ切り替わりとかに使ってもっとゲームっぽくしたいところだ。