回答編集履歴

3

誤字の修正

2020/12/12 15:06

投稿

PinoMatcha
PinoMatcha

スコア368

test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
  // 実際にtransformに代入(y以外は何も変わらない)
236
236
 
237
- transform.localRotation = Quaternion.Eular(transform.localRotation.x, easedY, transform.localRotation.z);
237
+ transform.localRotation = Quaternion.Euler(transform.localRotation.x, easedY, transform.localRotation.z);
238
238
 
239
239
  }
240
240
 

2

追記

2020/12/12 15:06

投稿

PinoMatcha
PinoMatcha

スコア368

test CHANGED
@@ -111,3 +111,131 @@
111
111
  質問への修正依頼ではコードが載せられないので回答へ。
112
112
 
113
113
  修正していただいたら、回答へ移ります。
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ ### 追記
122
+
123
+ とりあえず、ヒントになりそうなコードを載せます。
124
+
125
+
126
+
127
+ Y軸だけ回転させる処理を実装してみます。
128
+
129
+ 一旦floatで計算し、Yに当てはめる方法を取ります。
130
+
131
+
132
+
133
+ ```C#
134
+
135
+ // usingやクラス部分は省きます。
136
+
137
+
138
+
139
+
140
+
141
+ // 入力を格納
142
+
143
+ private int inputRaw;
144
+
145
+
146
+
147
+ // 回転させる角度
148
+
149
+ public float driftAngle = 45f;
150
+
151
+
152
+
153
+ // ドリフト時の回転速度
154
+
155
+ public float driftSpeed = 10f;
156
+
157
+
158
+
159
+ // ドリフト中か?
160
+
161
+ bool isDrifting = false;
162
+
163
+ // 滑らかにしたあとのYを格納
164
+
165
+ float easedY;
166
+
167
+ // イージングが必要かどうか
168
+
169
+ bool needEasing = true;
170
+
171
+
172
+
173
+ void Update(){
174
+
175
+ // 入力受付
176
+
177
+ // Input.GetAxisRaw("Horizontal")は左を-1、右を1で取得します。
178
+
179
+ // 直前に(int)を付けることで、floatから変換
180
+
181
+ inputRaw = (int)Input.GetAxisRaw("Horizontal");
182
+
183
+
184
+
185
+ if (Input.GetKeyDown(KeyCode.Space)) {
186
+
187
+ isDrifting = true;
188
+
189
+ needEasing = true;
190
+
191
+ }
192
+
193
+ if (Input.GetKeyUp(KeyCode.Space)) {
194
+
195
+ isDrifting = false;
196
+
197
+ }
198
+
199
+
200
+
201
+ if (isDrifting) {
202
+
203
+ // 回したい角度に入力(-1, 1)を掛けることで角度を反転させている
204
+
205
+ easedY = Mathf.Lerp(easedY, driftAngle * inputRaw, Time.deltaTime * driftSpeed);
206
+
207
+ } else {
208
+
209
+ // ドリフト中でなくて、イージングが必要なフラグがtrueなら
210
+
211
+ if(needEasing) {
212
+
213
+ // 0に向けてイージング
214
+
215
+ easedY = Mathf.Lerp(easedY, 0, Time.deltaTime * driftSpeed);
216
+
217
+
218
+
219
+ if(Mathf.Abs(easedY) < 0.1f) {
220
+
221
+ // easedYの絶対値が0.1未満ならeasedYを0にしてイージングフラグをfalseに
222
+
223
+ easedY = 0;
224
+
225
+ needEasing = false;
226
+
227
+ }
228
+
229
+ }
230
+
231
+ }
232
+
233
+
234
+
235
+ // 実際にtransformに代入(y以外は何も変わらない)
236
+
237
+ transform.localRotation = Quaternion.Eular(transform.localRotation.x, easedY, transform.localRotation.z);
238
+
239
+ }
240
+
241
+ ```

1

追記

2020/12/12 12:21

投稿

PinoMatcha
PinoMatcha

スコア368

test CHANGED
@@ -105,3 +105,9 @@
105
105
 
106
106
 
107
107
  基本、ソースコードはコピペでいいと思います。
108
+
109
+
110
+
111
+ 質問への修正依頼ではコードが載せられないので回答へ。
112
+
113
+ 修正していただいたら、回答へ移ります。