えんちゃですよおおおお。
前回は死亡イベントを作りましたね
せっかく作ったんだから、自爆だけじゃなく、やられたいよねー。
ということで、今回はタイムリミットを設定していきます。
早速作っていきましょう。
時間表記といったら右上な気がするので、右上にUI > Text を設置します。
今回、大事なのは
Time.deltaTime
と
Mathf.CeilToInt([float])
の2つだけです
Time.deltaTime は Updateメソッド内で使用できる特殊な関数で
前回Updateを呼ばれてから今までの時間が格納されています。
Update関数は1f = 0.13秒ごとに呼ばれているわけではないので、
ハイスペックだと猛スピードで動き、ロースペックだとゆっくり動いてしまうため、使用機種によって難易度に差が出てしまいます。
なのでTime.deltaTimeを使用して、速さを一定にしていきましょう。
もう一つ Mathf.CeilToInt([float])は切り上げしてInt型に変換してくれる便利な関数です。これを使わないと切り捨てになるため、0になってからゲームオーバーまで1秒ほど猶予があるのでおすすめしません。
UIコントローラには
- 時間を初期設定して画面にセットする。
- カウントする。
- 死亡時、時間を初期状態に設定し、セットする。
メインコントローラには
- UIコントローラの1を画面更新毎に呼び出す。
- 時間が0になったら死亡モーションを呼び出す。
- 死んだ時、UIコントローラの3を呼び出す。
を作っていきます。
UIコントローラ
public class UIController : MonoBehaviour { public Text Timer; private float TimeLimit; private float MoveTime; // Start is called before the first frame update void Start() { TimeLimit = 10; MoveTime = TimeLimit; Timer.text = TimeLimit.ToString(); } public bool TimeController(float deltaTime) { MoveTime = MoveTime - deltaTime; Timer.text = Mathf.CeilToInt(MoveTime).ToString(); if (MoveTime <= 0.0f) { return false; } return true; } public void SetReStartTime() { MoveTime = TimeLimit; } ・・・・・・ }
メインコントローラ
public class MainController : MonoBehaviour { ・・・・・・ void Update() { ・・・・・・ //時間を計算する if (!UIScript.TimeController(Time.deltaTime)) { //死亡モーション DeadController(); }; ・・・・・・ } private void ReStartMethod() { UIScript.SetReStartTime(); ・・・ } void DeadController() { /*死亡イベント*/ } }
ここまで来るのに長かった、あと横スクロールアクションで絶対に必要なもの、、、、、
ゴール作ってねぇ!ということで次回はゴールですかね
コメント