【6日目】GWゲーム制作
6日目終わりました。
今回はGRIDさんにて。
一難去ってまた一難。
スタートした時の「3・2・1・GO!」的なカウントダウンの実装に時間かけすぎちゃってデザインがあんまり進まなかった...
一応こんな感じにはできました。
1秒ごとに画像を切り替えてるんだけど、美しいコードが書けなくて悔しい...
IEnumerator Countdown()
{
yield return new WaitForSeconds(1.0f);
Count3.gameObject.SetActive(false);
Count2.gameObject.SetActive(true);
yield return new WaitForSeconds(1.0f);
Count2.gameObject.SetActive(false);
Count1.gameObject.SetActive(true);
yield return new WaitForSeconds(1.0f);
Count1.gameObject.SetActive(false);
Count0.gameObject.SetActive(true);
yield return new WaitForSeconds(1.0f);
_imageMask.gameObject.SetActive(false);
Count0.gameObject.SetActive(false);
}
こちらのサイトを参考に、数値のテキストカウントダウンではなく画像が切り替わるようにカスタマイズしてみました。
3を消して2をつけて、2を消して1をつけて...繰り返してるんだけどなんか強引に表示してるなーと...
もう少しスマートな切り替えができなかなーって考えてたけど時間なくなるので、一旦これでやっとく。
あとこいつの実装に伴って、もともとつけていた制限時間の開始タイミングも調節しなきゃいけなかった。3,2,1,GOの待ってる時に制限時間減ったらだめだもんね。
void Start()
{
StartTime = 4.0f;
totalTime = minute * 60 + seconds;
oldSeconds = 0f;
timerText = GetComponentInChildren<Text>();
}
void Update()
{
if (StartTime >= 0f)
{
StartTime -= Time.deltaTime;
}
else
{
// 制限時間が0秒以下なら何もしない
if (totalTime <= 0f)
{
Debug.Log(StartTime);
return;
}
// 一旦トータルの制限時間を計測;
totalTime = minute * 60 + seconds;
totalTime -= Time.deltaTime;
// 再設定
minute = (int)totalTime / 60;
seconds = totalTime - minute * 60;
// タイマー表示用UIテキストに時間を表示する
if ((int)seconds != (int)oldSeconds)
{
timerText.text = ((int)seconds).ToString("00");
}
oldSeconds = seconds;
//終了
if (totalTime <= 1f)
{
SceneManager.LoadScene("result");
}
}
}
3,2,1,GOが終わるまで4秒なので、StartTimeに4秒入れておいて、それが0になるまで待たせるって仕組み。
横にいるダイスケさんに助言もらいつつ実装までこじつけました。
こんなところで制限時間関連が終了したのが夜。
もう少し形にしたかったデザインは持ち越しです。
結構悩んで体力使うけど、ちょこちょこと「こうなんじゃないかな?」がうまく決まることが多くなってきた。整理整頓されたコードがしっかり動く瞬間はめっちゃ気持ちいいや。
そして
実は今新幹線の中で昨日の分のnote書いてるんですが、今日はとある用事のため急遽仙台に向かってます。実質、新幹線の移動時間しか作業できないので、明日の最終日で詰めにかかる感じです。
あとね。昨日はお昼ご飯の帰り道に、天皇皇后両陛下を見かけたりとレアイベントもあったよ。
めっちゃなげーぞ!って思ってたGWもあと2日。がんばるね。
続く...
最後まで読んでくれてありがとう...