振り返り:バレットタイム
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 36/56。
チャレンジ
中級フォーカスメーターを使って、ゲームにバレットタイムを導入しましょう。GameオブジェクトにBulletTime.csを書きます。InspectorでslowScale(0.2)、maxFocus(2)、recharge(0.5)、および画面上部にある塗りつぶしImageのfocusBarを設定します。メーターの値はfloat型のfocusに保持します。
focusはmaxFocusの値で満タンから始まります。- Spaceキーを押していて、
focusが0より大きい間、ゲームはslowScaleの速度で動作します。物理演算のステップも0.02から同じ倍率で短くなり、focusは実時間の1秒ごとに1ずつ減少しますが、0未満にはなりません。 - それ以外の時間は、ゲームは通常の速度で動作し、物理演算のステップは0.02になります。メーターが空になると、Spaceキーを押し続けていてもバレットタイムは終了します。
- Spaceキーを押していない間、
focusは実時間の1秒ごとにrechargeずつ、最大maxFocusまで回復します。 - 毎フレーム、バーの
fillAmountはfocusをmaxFocusで割った値になります。
Playを押してSpaceキーを押し続け、雨の動きを見てから、Checkを押しましょう。
自分で試してみよう
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 Update()
{
}
}