振り返り:バレットタイム
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 37/60。
この章では、ゲーム時間を停止させ、遅くし、再開しました。バレットタイムでは、これらを組み合わせます。小さくしたTime.timeScale、それに合わせた物理演算のステップ、そして実時間の秒数を数えるメーターです。
チャレンジ
中級ゲームにバレットタイムを実装しましょう。
Update()で、Spaceを押していて、かつfocus > 0fの場合:時間スケールをslowScaleにし、物理演算のステップを0.02f * slowScaleにして、focusを実時間で1秒あたり1ずつ減らします。ただし、0未満にはなりません。- それ以外の場合は、スケールを
1f、ステップを0.02fにします。Spaceを離している間は、focusが実時間で1秒あたりrechargeずつ回復し、上限はmaxFocusです。 - 次に、
focusBar.fillAmount = focus / maxFocus;を設定します。
「プレイ」を押してSpaceを押し続けると、雨がゆっくりになります。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
using UnityEngine.UI;
public class BulletTime : MonoBehaviour
{
public float slowScale = 0.2f;
public float maxFocus = 2f;
public float recharge = 0.5f;
public Image focusBar;
float focus;
void Start()
{
focus = maxFocus;
}
void Update()
{
// Spaceを押していてfocusが残っている間はバレットタイムにし、それ以外は通常の時間に戻してから、バーを更新する
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
本格的なゲームを作るのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド