ぼくの息抜き

ぼくの息抜き

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

CSS MenuMaker

unityゲームプログラミング 雨を降らすゲームを作るPart6 -シンプルにゲームできるように-

f:id:bokunoikinuki:20180621201305p:plain

前回で成長要素のアイデアをまとめ、放置ゲームの大枠が決まった。

一つずつ要素を実装して行く。

シンプルに遊べるように

  • 雨の量を増やせる
  • 雨の降る時間を伸ばせる

あとは合計の雨の降らせた数をテキストでどこかに表示する。

これらを一つずつ実装して行く。

  • 雨の量を増やせる
  • 雨の降る時間を伸ばせる

この二つはアップグレードボタンだ。

すでにデザインとしてあるので、このボタンを押せるようにし、そこからParticle Systemの数値を変えられれば完成だ。

やってみよう。

現状はGameManagerからParticle SystemをPlay(),Stop()を使って制御している。ここからParticles Systemの数値もGetComponentすれば数値が変えられるだろう。

見やすいコードにしたいけど、どうすればいいんだ?

変えられた。

Particle SystemのemissionのrateOverTimeを変えた。

Unity - Scripting API: ParticleSystem.EmissionModule.rateOverTime

rateOverTimeには直接floatの数字は入れられるが、演算はできない。

  • 出来る
  • emission.rateOverTime = float;
  • 出来ない
  • emission.rateOverTime = emission.rateOverTime + float;

いやー、だいぶ時間がかかった。

コードが長くなればなるほど、何をするにも時間がかかるのかな。

そうなるともっと見やすいコードを書かないといけないな。でも何が問題かわからん。

変数の名前をどうつけるかに結構迷う。ユニークな名前にしようとするとどうしても長くなる。しかも一週間後その変数名を見て何に使われるか完璧に覚えている自信がない。

Prefabを変えてて便利な機能を見つけた。

f:id:bokunoikinuki:20180629163752p:plain

このApply Changes To Prefabを使えばいちいちPrefabのファイルを消して、またドラッグ&ドロップしなくていい。

追加、雨降る残り時間があったほうがいい

とりあえず、ゲームバランスは置いておいて、雨を降らせRPをゲットし、それで雨の量や降る時間を増やせるようになった。

f:id:bokunoikinuki:20180629165227p:plain

雨の降る時間があったほうがいいと思うので、追加する。

flote型の残り時間をテキストに整数表示するためにToString ()をつかったのだが、どうやら四捨五入するようで 分:秒と分けて表示する場合残り59.5~60.4になると0:60という表示になる。

-0.5fすることで無理やり59秒で表示させるようにした。0.4秒以下で-1になるが、0以下は0とするようにすれば問題ない。

ゴリ押し。

あとは秒数が一桁になったら0:09秒というような表示にしたい。どうしようか。ゴリ押しなら秒が9秒以下になったらstringで"0"を足す、10秒以上ならnullにすればいける?

void Update () {
		float second = rainTime % 60.0f - 0.5f;
		float minute = (rainTime - second) / 60.0f;
		string a = null;
		if (second < 9.5f) {
			a = "0";
			if (second < 0) {
				second = 0;
			}
		} else {
			a = null;
		}
		remainTimeText.text = minute.ToString ("f0") + ":" + a + second.ToString ("f0");

 ここだけじゃわかりにくいかもしれないが、rainTimeがfloat型の残り時間。

むちゃくちゃゴリ押し感満載。

まぁでもとにかくこれで理想通りの挙動になった。

f:id:bokunoikinuki:20180629181530p:plain

次回は背景とか少しいじってみる。ちょっといいアイデアがあるので、それでどうなるか試してみる。