Time.timeScaleを変更する
Unityで倍速を簡単に実装するなら、ProjectSettingsにある、TimeScaleの値を変えることで、実現することが出来ます。
初期値は1となっていて、現実と同じ時間であることを表しています。倍速にしたい場合は、この値を2にすることで、2倍速でゲームが進行していきます。
プログラムからTimeScaleを変更する
Time.timeScale = 2; //2倍速
プログラムからゲームの再生速度を変更したい時は、Time.timeScaleに値を渡すことで、ゲームを倍速にすることが出来ます。
実装例
using UnityEngine;
public class TimeChange : MonoBehaviour
{
//停止
public void StopButton()
{
Time.timeScale = 0;
}
//スロー再生
public void SlowButton()
{
Time.timeScale = 0.5f;
}
//標準の再生速度
public void DefaultButton()
{
Time.timeScale = 1;
}
//倍速再生
public void FastButton()
{
Time.timeScale = 2;
}
}
このプログラムのように、ボタンを押したときに再生速度を変更するようにしておけば、ゲームなどの挙動をテストしたりするのにとても役立ちます。デバッグ用として再生速度変更ボタンを作っておくのもありだと思います!
Time.timeScaleはAnimationにも作用してしまう
一つ問題なのが、TimeScaleを変更するとアニメーションにも影響が出てしまうことです。
ゲームに出てくるキャラクターのアニメーションなどに影響が出るのはありがたいのですが、UIなどのアニメーションの速度も変わってしまうので、TimeScaleを変更するだけでは、すこし問題が出てきそうです。
対策
_animator.updateMode = AnimatorUpdateMode.UnscaledTime; //TimeScaleの影響を受けないようにする
再生速度の変更を作用させたくないアニメーションがある場合は、作用させたくないanimatorのupdateModeをコードのように変更することで、影響を受けなくなります。