回答編集履歴
1
別案追記
answer
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
一番楽なのはタイマー用の変数を設けることです。
|
2
|
-
「Xボタンを押している間、数秒間速度が変わる」
|
2
|
+
「Xボタンを押している間、数秒間速度が変わる」場合。
|
3
|
-
|
4
3
|
```C#
|
5
4
|
public float run_time = 3.0f; //何秒間速度が変わるか
|
6
5
|
float timer; //時間カウント用変数
|
@@ -23,4 +22,38 @@
|
|
23
22
|
}
|
24
23
|
```
|
25
24
|
イメージとしてこんな感じかと思います。
|
26
|
-
どのタイミングでタイマーをクリアするか等は仕様に応じて変えてください。
|
25
|
+
どのタイミングでタイマーをクリアするか等は仕様に応じて変えてください。
|
26
|
+
|
27
|
+
---
|
28
|
+
|
29
|
+
「Xボタンを押した後(Xが押されっぱなしかに関わらず)数秒間速度が変わる」場合。
|
30
|
+
```C#
|
31
|
+
public float run_time = 3.0f; //何秒間速度が変わるか
|
32
|
+
float timer; //時間カウント用変数
|
33
|
+
bool isAccel; //速度が変わっているかどうかフラグ
|
34
|
+
|
35
|
+
public float gravity = 20.0f;
|
36
|
+
public float speedZ = 30;
|
37
|
+
public float accel ; 60
|
38
|
+
|
39
|
+
// 時間カウント
|
40
|
+
if (Input.GetKeyDown(KeyCode.X) && !isAccel) { //タイマー開始
|
41
|
+
isAccel = true;
|
42
|
+
}
|
43
|
+
if (isAccel) timer += Time.deltaTime; //タイマー加算
|
44
|
+
if (isAccel && timer > run_time) { //タイマー終了
|
45
|
+
isAccel = false;
|
46
|
+
timer = 0.0f;
|
47
|
+
}
|
48
|
+
|
49
|
+
// 速度変化
|
50
|
+
if (Input.GetKey(KeyCode.X))
|
51
|
+
{
|
52
|
+
moveDirection.y -= gravityA * Time.deltaTime;
|
53
|
+
if (controller.isGrounded){
|
54
|
+
if (isAccel) { //タイマーチェック
|
55
|
+
moveDirection.z = accel;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
```
|