teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

誤字の修正

2020/12/12 15:06

投稿

PinoMatcha
PinoMatcha

スコア368

answer CHANGED
@@ -116,6 +116,6 @@
116
116
  }
117
117
 
118
118
  // 実際にtransformに代入(y以外は何も変わらない)
119
- transform.localRotation = Quaternion.Eular(transform.localRotation.x, easedY, transform.localRotation.z);
119
+ transform.localRotation = Quaternion.Euler(transform.localRotation.x, easedY, transform.localRotation.z);
120
120
  }
121
121
  ```

2

追記

2020/12/12 15:06

投稿

PinoMatcha
PinoMatcha

スコア368

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

追記

2020/12/12 12:21

投稿

PinoMatcha
PinoMatcha

スコア368

answer CHANGED
@@ -51,4 +51,7 @@
51
51
  }
52
52
  ```
53
53
 
54
- 基本、ソースコードはコピペでいいと思います。
54
+ 基本、ソースコードはコピペでいいと思います。
55
+
56
+ 質問への修正依頼ではコードが載せられないので回答へ。
57
+ 修正していただいたら、回答へ移ります。