質問: accel; } } ``` ### 補足情報(FW/ツールのバージョンなど) キャラクターコントローラーを使用 Fixed TimeStepは0.01
回答: 一番楽なのはタイマー用の変数を設けることです。 「Xボタンを押している間、数秒間速度が変わる」場合。 ``` public float run_time = 3.0f; //何秒間速度が変わるか float timer; //時間カウント用変数 public float gravity = 20.0f; public float speedZ = 30; public float accel ; 60 if (Input.GetKey(KeyCode.X)) { moveDirection.y -= gravityA * Time.deltaTime; if (controller.isGrounded){ if (timer < run_time) { //タイマーチェック moveDirection.z = accel; timer += Time.deltaTime; //タイマー加算 } } } else { //キーが離されていたら timer = 0.0f; //タイマークリア } ``` イメージとしてこんな感じかと思います。 どのタイミングでタイマーをクリアするか等は仕様に応じて変えてください。 「Xボタンを押した後(Xが押されっぱなしかに関わらず)数秒間速度が変わる」場合。 ``` public float run_time = 3.0f; //何秒間速度が変わるか float timer; //時間カウント用変数 bool isAccel; //速度が変わっているかどうかフラグ public float gravity = 20.0f; public float speedZ = 30; public float accel ; 60 // 時間カウント if (Input.GetKeyDown(KeyCode.X) && !isAccel) { //タイマー開始 isAccel = true; } if (isAccel) timer += Time.deltaTime; //タイマー加算 if (isAccel && timer > run_time) { //タイマー終了 isAccel = false; timer = 0.0f; } // 速度変化 if (Input.GetKey(KeyCode.X)) { moveDirection.y -= gravityA * Time.deltaTime; if (controller.isGrounded){ if (isAccel) { //タイマーチェック moveDirection.z = accel; } } } ```