トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【Unity1week「当てる」】自販機で当たりが出たら殴られて戒めるゲーム

Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

今回も参加させていただきます。 

前回は見た目だけのクソゲーを作ってしまいました。

bibinbaleo.hatenablog.com

追記

レビューしてくださってました!

yamato-develop.hatenablog.com

youtu.be

お二方とも全て遊んでいるのすごいですね!遊んでくださるのは嬉しいです。

考える

2Dゲームを作ってみたい。

キャラが前面に出るような見た目がいい。(私のセイみたいな)

Live2Dを使いたい。

bibinbaleo.hatenablog.com

bibinbaleo.hatenablog.com

色々探しましたがUnityで自由に使えそうなイケメンモデルがなかったのでlive2Dはやめます。

SDKのインポート~モデルを配置 | Live2D Manuals & Tutorials

サンプルモデル集 | Live2D Manuals & Tutorials

アセットストアにもイケメンはいなかった。まあただでイケメンがいるわけないよな

Asset Store

 

結局おそ松さん第2期2クール17話の「戒め」を元にしたゲームを作ることにしました。

おそ松さん 第17話「UMA探検隊③」「戒め!」「旅館」「デリバリーコント」 アニメ/動画 - ニコニコ動画

発想のきっかけはバスから見えた自販機。自販機といえば当たる。当たり付き自販機といえばそんな話がおそ松さんにあったな〜って感じです。

お話としては、夜ご飯が焼肉になったのに、昼間からいいことが起きすぎて「幸せ借金」がかさんで怖い。

f:id:bibinbaleo:20180222143108p:plainf:id:bibinbaleo:20180222143110p:plain

幸せ借金がたまると不幸返済をしないといけない。

f:id:bibinbaleo:20180222143852p:plain
戒めていかないと。自ら悪いことを起こして、バランス取っていかないと

f:id:bibinbaleo:20180222143911p:plain

ということで、自販機で当たりが出たら十四松のパンチを自ら受けて、不幸返済をし、幸せ借金と不幸返済ゲージのバランスを取るというわかりにくいゲームです。

f:id:bibinbaleo:20180222143749p:plain

アセット

Unity公式が出している2D Game Kitを使うことにしました。

日本語の記事が全然ないので動画見ました。

このアセットの基本的な使い方はこっちにまとめました。

bibinbaleo.hatenablog.com

あたりの音

あたり付き自販機を使ったことないので動画を見ました。

あたりの音は目覚ましっぽかったので目覚ましの効果音で代用しました。

www.youtube.com

 

ダウンロードした音が長すぎたのでUnity内で調整できないかと思い、下の記事を試しましたがうまくいかなかったので、

icoc-dev.hatenablog.com

ウェブサイトでカットしました。

audiotrimmer.com

音が鳴り終わったら数字を表示するようにしたかったのでisPlayingで判定しました。

docs.unity3d.com

音の高さはpichで調整できました。

ダメージ

エレンに攻撃を加えるには攻撃を加えるオブジェクトにDamagerをつけて一番下のhittable LayersをPlayerにしたら攻撃が入りました。

f:id:bibinbaleo:20180220130855p:plain

グーパンチ!

f:id:bibinbaleo:20180220130858p:plain

エレン側のライフが減る様子は

f:id:bibinbaleo:20180220155303p:plain

エレンについているon health SetにhealthCanvasをセットする。

f:id:bibinbaleo:20180220155549p:plain

あとダメージを受けた時のピカピカする長さは青いとこ。

f:id:bibinbaleo:20180220154949p:plain

エレン側のダメージをカウントする部分は  public void TakeDamage(Damager damagerbool ignoreInvincible = false)

でした。

この中に

  GameObject deathhearts = GameObject.Instantiate(deathheartas GameObject;/////////koko
            deathhearts.transform.position = dea;
           // var canvas = GameObject.FindObjectOfType<Canvas>();
            deathhearts.transform.SetParent(canvas.transformfalse);
            dea.x += 0.2f;
            b++;

不幸返済ゲージが溜まるスクリプトを書きました。 

 コルーチン

初めてコルーチンを使いましたがとても便利でした。

developer.wonderpla.net

2秒たったらこの行を実行する。みたいなのが簡単にできます。

これを使って、「ピピピピという音が鳴り終わったらくじの結果を出し、1秒後にパンチを出す」みたいなのができました。

UIプレハブ

Animated GIF - Find & Share on GIPHYwww.giphy.com

あたりが出たら幸せ借金ゲージが1増えるという演出をしました。

最初は普通にプレハブをインスタンスして、位置をずらすだけをやっていたのですが、Canvasの下に生成されず、変な位置に出てしまいました。

unity3d.sakura.ne.jp

UIをプレハブ化するにはSetParentというのを使う必要があるそうです。これらを組み合わせたら無事にできました。

tm8r.hateblo.jp

private Vector3 hea = new Vector3(-0.31f1.451f0);

~~~~~~

         GameObject hearts = GameObject.Instantiate(heartas GameObject;

                hearts.transform.position = hea;
                var canvas = GameObject.FindObjectOfType<Canvas>();
                hearts.transform.SetParent(canvas.transform,false);
                hea.x += 0.2f;

スタート画面&ゲームオーバー

スタート画面はboolを使ってupdateで一回だけ呼び出す感じにしました。

クリックしたらスタート画面が消えて、コルーチンで作ったゲームが始まる。

void Update () {
        if (Input.GetMouseButton(0)&&isCalled==false)
            {
            isCalled = true;   
            start.SetActive(false);
                StartCoroutine("Zihanki");

            }}

この方法はクールじゃないらしいですが、うまい方法がわからなかった。

qiita.com

ゲームオーバー画面は3つに分岐しています。自販機で当たった回数と殴られた回数を別々のスクリプトから持ってきて、その数の大小によって別れます。

 if (atari.a == Damageable.b)
            {
                happy.SetActive(true);
                if (Input.GetMouseButton(0))
                {
                    happy.SetActive(false);
                    SceneManager.LoadScene("test");
                }
            }

そして画面が表示され、クリックしたら消えて、sceneを初期化します。

あとゲームエンドによってBGMを変えようとしていたのですが、updateにAudioSouce.Play()を書いていたせいで何回も呼び出され音がならないということがありました。

その場合は

 if (badend.isPlaying == false)
               badend.Play();

とすれば良いそうです。

sayone128.hatenablog.com

マジで原因わからなくてエディタ再起動してた。結果的に自力で気づけてよかった。

キャラを動かすキーを変える

公式リファレンスのこのページに書いてありました。

unity3d.com

キャラについているPlayer Inputのselect prefabを押して各項目を設定できます。

f:id:bibinbaleo:20180221224259p:plain

今回はしゃがむ動作だけできれば良いので他はNoneにしてしゃがむ動作をクリックにしました。

qiita.com

f:id:bibinbaleo:20180222062525p:plainf:id:bibinbaleo:20180222062518p:plain

沼のパーティクルを見たらこんな感じのことが書いてありました。

f:id:bibinbaleo:20180222062526p:plain

多分トリガーになったのはColor spaceを変えたこと?

デフォルトのLinearだとwebglで何たらかんたらと出たのでGanmaにしたら、その後からパーティクルが変になった気がします。

f:id:bibinbaleo:20180222062508p:plain

治しかたがわからなかったのでパーティクルを見えなくしました。

 

f:id:bibinbaleo:20180222075825p:plain

完成

暇人なので早めに完成しました。

https://unityroom.com/games/imashime

主催のnaichiさま毎回ありがとうございます。

すごく制作意欲に繋がるし勉強になります。

 

みなさんおそ松さんを見てください。