0 支持
36 閲覧
ゲーム中にボタンを押せば、コマ送りができるようなスクリプトが書きたいです。

具体的には、ボタンを押した際に、物理挙動を1コマだけ進めたいです。(自由落下であれば、次の演算分だけ落とす等)

と言っても、一つの物体に注目して行うのでは無く、ゲーム全体を

Time.timeScale = 0;

一度停止して、ボタンを押せば物理挙動全体が、次の演算分だけ動くといったことを実装したいです。

調べても方法が全く分からなかったので、何か良い方法があれば、ご教授願いたいです。
閉鎖
初心者 (400 ポイント)
閉鎖 | 36 閲覧

回答 1

+1 支持
ベストアンサー

Time.timeScale = 0の状態で、一瞬TimeScaleを元に戻し、

コルーチンでWaitForFixedUpdateを呼んだあとに0に再設定するとできると思います

(WaitForFixedUpdateは次の物理演算まで待機する。という処理です)

コードにすると下のような感じになります。ボタンを押した時のイベントにonClickKomaokuriButtonをつけてみてください

private IEnumerator Komaokuri()
{
    Time.timeScale = 1f;
    yield return new WaitForFixedUpdate();
    Time.timeScale = 0f;
}

public void onClickKomaokuriButton()
{
    StartCoroutine(Komaokuri());
}
一人前回答者 (1.7k ポイント)
選択
+1
ご回答ありがとうございました。
コルーチンの機能がわからなかったため、抽象的な質問になってしまいました。
このような質問にもご丁寧に回答してくださりありがとうございました。

関連する質問

0 支持
1 回答
0 支持
1 回答
tensaku 初心者 (440 ポイント) 2020 9/21 質問 | 96 閲覧
0 支持
2 回答
0 支持
2 回答
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

103 質問

107 回答

117 コメント

130 ユーザー