質問編集履歴

2

追記①と追記②を追記

2021/01/23 08:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -147,3 +147,131 @@
147
147
  }
148
148
 
149
149
  ```
150
+
151
+
152
+
153
+ ### 追記①
154
+
155
+ ・時間を指定しないイージング。
156
+
157
+ ```C#
158
+
159
+ float speed = 0.5f;
160
+
161
+ IEnumerator MoveCoroutine(Transform move, Transform startPoint, Transform endPoint){
162
+
163
+ move.position = startPoint.position;
164
+
165
+ while(move.position != endPoint.position){
166
+
167
+ move.position = Vector3.Lerp(move.position, endPoint.position, Time.deltaTime * speed);
168
+
169
+ float distance = (endPoint.position - move.transform.position).sqrMagnitude;
170
+
171
+ if(distance < 0.0001){
172
+
173
+ move.position = endPoint.position;
174
+
175
+ }
176
+
177
+ yield return null;
178
+
179
+ }
180
+
181
+ Debug.Log("finish");
182
+
183
+ }
184
+
185
+ ```
186
+
187
+
188
+
189
+ ### 追記②
190
+
191
+ ・easeOutElasticの元のコード。
192
+
193
+ ```
194
+
195
+ function easeOutElastic(x: number): number {
196
+
197
+ const c4 = (2 * Math.PI) / 3;
198
+
199
+
200
+
201
+ return x === 0
202
+
203
+ ? 0
204
+
205
+ : x === 1
206
+
207
+ ? 1
208
+
209
+ : pow(2, -10 * x) * sin((x * 10 - 0.75) * c4) + 1;
210
+
211
+ }
212
+
213
+ ```
214
+
215
+
216
+
217
+ ・試したコード(EaseOutElastic)
218
+
219
+ ```C#
220
+
221
+ static float EaseOutElastic(float t)
222
+
223
+ {
224
+
225
+ const float c4 = (2.0f * Mathf.PI) / 3.0f;
226
+
227
+
228
+
229
+ t = Mathf.Clamp01(t);
230
+
231
+ return t == 0 ? 0 : t == 1 ? 1 : Mathf.Pow(2, -10 * t) * Mathf.Sin((t * 10 - 0.75f) * c4) + 1;
232
+
233
+ }
234
+
235
+
236
+
237
+ float animationLength = 5.0f;
238
+
239
+ IEnumerator MoveCoroutine(Transform move, Transform startPoint, Transform endPoint){
240
+
241
+ move.position = startPoint.position;
242
+
243
+ for (float time = 0.0f; time < animationLength; time += Time.deltaTime){
244
+
245
+ move.position = Vector3.Lerp(startPoint.position, endPoint.position, EaseOutElastic(time / this.animationLength));
246
+
247
+ yield return null;
248
+
249
+ }
250
+
251
+ }
252
+
253
+
254
+
255
+ static float EaseOutExpo(float t)
256
+
257
+ {
258
+
259
+ t = Mathf.Clamp01(t);
260
+
261
+ return t < 1.0f ? 1.0f - Mathf.Pow(2.0f, -10.0f * t) : 1.0f;
262
+
263
+ }
264
+
265
+
266
+
267
+ static float EaseOutCubic(float t)
268
+
269
+ {
270
+
271
+ var it = 1.0f - Mathf.Clamp01(t);
272
+
273
+ return 1.0f - (it * it * it);
274
+
275
+ }
276
+
277
+ ```

1

改行

2021/01/23 08:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -80,9 +80,9 @@
80
80
 
81
81
  ・質問2。
82
82
 
83
-  Lerpのイージング処理では、質問1と違って、Time.deltaTimeを掛けることが必要と思い、下記コードを組んでみたのですが、
83
+  Lerpのイージング処理では、質問1と違って、Time.deltaTimeを掛けることが必要と思い、
84
84
 
85
-  一瞬で、startPointからendPointに移動してしまいます。
85
+  下記コードを組んでみたのですが、一瞬で、startPointからendPointに移動してしまいます。
86
86
 
87
87
   for文の中で2つのログを取ってみたのですが、問題なさそうでした。
88
88