ぼくの息抜き

ぼくの息抜き

気ままな二人が記事を書くことで息抜きしていくブログ

CSS MenuMaker

unityゲームプログラミング 雨を降らすゲームを作るPart8 -放置ゲームの転生を導入-

f:id:bokunoikinuki:20180621201305p:plain

前回見た目関連を変えた。

プロトタイプと比べたらめちゃくちゃ変わってて笑った。

見た目はゲームのクオリティを激変させる。

f:id:bokunoikinuki:20180630102153p:plain

よりゲームを拡張させる

今回はよりゲームをやり込めるように、放置ゲームで良くある周回要素を加える。

そんなに難しくない、はず。

転生の大まかな流れとしては

  1. ある程度までゲームが進むと転生ボタンを出す
  2. 転生ボタンを押すと特殊なボーナスがもらえる
  3. 全ての数値がリセットする
  4. 1からゲームが始まる

転生しますか?Yes,No画像を作ってそこに今転生したらどれくらいボーナスがもらえるかも表示させる。

その辺のデザインも決める必要がある

  • 転生時の別枠のデザインを決める

ホワイトボードで何からやるか決める

f:id:bokunoikinuki:20180630110629j:plain

周回要素はとてもシンプル。放置ゲームやってて思ったけど、作る側はそんなに難しくないのに転生要素を加えるとゲームボリュームが激増する。

個人制作では使わない手はない。

ゲームバランスがめちゃくちゃ重要になるけど、それは後々やる。

リセットできるボタンを作る

一気に全部実装するのは無理なので、一つ一つ分解して、実装していく。

f:id:bokunoikinuki:20180630110925j:plain

とりあえず、

  • リセットできるボタンを作る
  • それを押すとRPなどの数値がリセットされ
  • 1からゲームが始まるように

まぁ、簡単だ。

転生というボタンを作り

f:id:bokunoikinuki:20180630111929p:plain

それを押した時の関数をスクリプトで繋げるだけ。

この場合これもPrefabにしたほうがいいのか?他のscriptでも扱えるようにPrefabにしておこう。

いや、Prefabにしなくても他のscriptでGameObject.Findで使えるか

PrefabじゃないとUpdateのところに出現のscript入れておいても何度も重なって出現とかがないのか。

今回はPrefabにしなくていいや。

SetActiveでボタンを出現させたり、消したりしよう。

ボタンについて気が付いたこと

ボタンの選択範囲とボタンのUIを別々にして、タップしたときにUIだけ色を変えるには

f:id:bokunoikinuki:20180630114000p:plain

ここにUIのgameObjectを入れればいいということがわかった。Targetって書いてあるから最初はボタンの押せる範囲かと思っていた。

さてボタンを押したら関数を呼び出せるようになった。

これをさて、ゲームをリセットするには何をどうすればいいんだ?

まずはリセットする変数を探していこう。

完了

うmm。そんなにコードを変更していないが、たった200行程度でも少し解読しないとバグがでる。

もっと規模のでかいゲームを作る上で必ず障壁となる。

もっと解読、拡張性のあるコードの書き方を学ばないとな。どうすれば学べるかな。

頭の片隅においておこう。

 

ゲームがある程度進んだらリセットボタンが出現

無事リセットができたので、次はある程度ゲームが進んだところでリセットボタンが出現するようにする。

おけいできた。

次は本当に転生しますか画面を表示させる。

これは一番上に表示させたい。layerでやるかPrefab?

scene上のgameObjectとPrefabについて調べてみたが、まだそんなに気にしなくていいっぽい。

参考記事:【Unity】動的に増やすGameObjectは別にPrefabでなくとも良い - テラシュールブログ

scene上でユニークなものはわざわざPrefabにしなくていいな。

転生確認画面を表示させる

つまったー。ボタン押して普通に表示させることはできたが、Prefabで表示させているボタン類より後ろに表示されてしまうため、後ろのボタンが押せてしまう。

add ComponentでCanvas追加して

f:id:bokunoikinuki:20180630144327p:plain

前面に表示させることはできたが、後ろに配置されているボタンが押せてしまう。

Raycast targetで押せなくなると思ったが、ダメだった。

f:id:bokunoikinuki:20180630144822p:plain

うmm。フラグで管理するのはできるけど、めんどくさい?でもこれ以上ボタン増えることはないし、それでやるか。

まぁ、できたが、あまり気が進まない。直接ボタンごとにenable的なものをfalseにするのも微妙すぎるから案外一番スマートなやり方なのかもしれないが…わからん。

次回はリセット確認画面のデザインを簡単に作ってボーナスポイントをゲットできるようにする。