えんちゃですよおおおお。
前回は死亡イベントを作りましたね
せっかく作ったんだから、自爆だけじゃなく、やられたいよねー。
ということで、今回はタイムリミットを設定していきます。
早速作っていきましょう。
時間表記といったら右上な気がするので、右上に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()
{
/*死亡イベント*/
}
}

ここまで来るのに長かった、あと横スクロールアクションで絶対に必要なもの、、、、、
ゴール作ってねぇ!ということで次回はゴールですかね

コメント