回答編集履歴
3
誤字の修正
answer
CHANGED
@@ -116,6 +116,6 @@
|
|
116
116
|
}
|
117
117
|
|
118
118
|
// 実際にtransformに代入(y以外は何も変わらない)
|
119
|
-
transform.localRotation = Quaternion.
|
119
|
+
transform.localRotation = Quaternion.Euler(transform.localRotation.x, easedY, transform.localRotation.z);
|
120
120
|
}
|
121
121
|
```
|
2
追記
answer
CHANGED
@@ -54,4 +54,68 @@
|
|
54
54
|
基本、ソースコードはコピペでいいと思います。
|
55
55
|
|
56
56
|
質問への修正依頼ではコードが載せられないので回答へ。
|
57
|
-
修正していただいたら、回答へ移ります。
|
57
|
+
修正していただいたら、回答へ移ります。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
### 追記
|
62
|
+
とりあえず、ヒントになりそうなコードを載せます。
|
63
|
+
|
64
|
+
Y軸だけ回転させる処理を実装してみます。
|
65
|
+
一旦floatで計算し、Yに当てはめる方法を取ります。
|
66
|
+
|
67
|
+
```C#
|
68
|
+
// usingやクラス部分は省きます。
|
69
|
+
|
70
|
+
|
71
|
+
// 入力を格納
|
72
|
+
private int inputRaw;
|
73
|
+
|
74
|
+
// 回転させる角度
|
75
|
+
public float driftAngle = 45f;
|
76
|
+
|
77
|
+
// ドリフト時の回転速度
|
78
|
+
public float driftSpeed = 10f;
|
79
|
+
|
80
|
+
// ドリフト中か?
|
81
|
+
bool isDrifting = false;
|
82
|
+
// 滑らかにしたあとのYを格納
|
83
|
+
float easedY;
|
84
|
+
// イージングが必要かどうか
|
85
|
+
bool needEasing = true;
|
86
|
+
|
87
|
+
void Update(){
|
88
|
+
// 入力受付
|
89
|
+
// Input.GetAxisRaw("Horizontal")は左を-1、右を1で取得します。
|
90
|
+
// 直前に(int)を付けることで、floatから変換
|
91
|
+
inputRaw = (int)Input.GetAxisRaw("Horizontal");
|
92
|
+
|
93
|
+
if (Input.GetKeyDown(KeyCode.Space)) {
|
94
|
+
isDrifting = true;
|
95
|
+
needEasing = true;
|
96
|
+
}
|
97
|
+
if (Input.GetKeyUp(KeyCode.Space)) {
|
98
|
+
isDrifting = false;
|
99
|
+
}
|
100
|
+
|
101
|
+
if (isDrifting) {
|
102
|
+
// 回したい角度に入力(-1, 1)を掛けることで角度を反転させている
|
103
|
+
easedY = Mathf.Lerp(easedY, driftAngle * inputRaw, Time.deltaTime * driftSpeed);
|
104
|
+
} else {
|
105
|
+
// ドリフト中でなくて、イージングが必要なフラグがtrueなら
|
106
|
+
if(needEasing) {
|
107
|
+
// 0に向けてイージング
|
108
|
+
easedY = Mathf.Lerp(easedY, 0, Time.deltaTime * driftSpeed);
|
109
|
+
|
110
|
+
if(Mathf.Abs(easedY) < 0.1f) {
|
111
|
+
// easedYの絶対値が0.1未満ならeasedYを0にしてイージングフラグをfalseに
|
112
|
+
easedY = 0;
|
113
|
+
needEasing = false;
|
114
|
+
}
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
// 実際にtransformに代入(y以外は何も変わらない)
|
119
|
+
transform.localRotation = Quaternion.Eular(transform.localRotation.x, easedY, transform.localRotation.z);
|
120
|
+
}
|
121
|
+
```
|
1
追記
answer
CHANGED
@@ -51,4 +51,7 @@
|
|
51
51
|
}
|
52
52
|
```
|
53
53
|
|
54
|
-
基本、ソースコードはコピペでいいと思います。
|
54
|
+
基本、ソースコードはコピペでいいと思います。
|
55
|
+
|
56
|
+
質問への修正依頼ではコードが載せられないので回答へ。
|
57
|
+
修正していただいたら、回答へ移ります。
|