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

回答編集履歴

1

formatting

2020/07/29 12:24

投稿

momomo
momomo

スコア14

answer CHANGED
@@ -1,38 +1,38 @@
1
1
  速度を2段階変化させることで理想の挙動を得ることができました。
2
2
  ありがとうございました。
3
- ```ここに言語を入力
3
+ ```C#
4
4
  IEnumerator Start()
5
+ {
6
+ var p = t1.position;
7
+ while (true)
8
+ {
9
+ t1.position = p;
10
+ var direction = (t2.position - t1.position).normalized;
11
+ var distance = Vector2.Distance(t1.position, t2.position);
12
+
13
+ var v0 = initSpd;
14
+ var M = distance;
15
+ var T = duration;
16
+ var tm = M / v0;
17
+ var vm = v0 / T * tm;
18
+ var accel1 = (vm - v0) / (tm - 0);
19
+ var accel2 = (0 - vm) / (T - tm);
20
+ Debug.Log($"vo={v0}, M={M}, T={T}, tm={tm}, vm={vm}, accel1={accel1}, accel2={accel2}");
21
+ var v = initSpd;
22
+ var stime = Time.time;
23
+ var hist = 0f;
24
+ // update
25
+ yield return Utils.Coroutine.WhileForSeconds(T, () =>
5
26
  {
6
- var p = t1.position;
7
- while (true)
8
- {
9
- t1.position = p;
10
- var direction = (t2.position - t1.position).normalized;
27
+ t1.Translate(direction * v * Time.deltaTime);
28
+ hist += v * Time.deltaTime;
29
+ if (Time.time - stime <= tm)
30
+ v += accel1 * Time.deltaTime;
31
+ else
32
+ v += accel2 * Time.deltaTime;
33
+ });
11
- var distance = Vector2.Distance(t1.position, t2.position);
34
+ Debug.Log($"経過時間={Time.time - stime}, 移動距離={hist}, v={v}");
35
+ }
36
+ }
12
37
 
13
- var v0 = initSpd;
14
- var M = distance;
15
- var T = duration;
16
- var tm = M / v0;
17
- var vm = v0 / T * tm;
18
- var accel1 = (vm - v0) / (tm - 0);
19
- var accel2 = (0 - vm) / (T - tm);
20
- Debug.Log($"vo={v0}, M={M}, T={T}, tm={tm}, vm={vm}, accel1={accel1}, accel2={accel2}");
21
- var v = initSpd;
22
- var stime = Time.time;
23
- var hist = 0f;
24
- // update
25
- yield return Utils.Coroutine.WhileForSeconds(T, () =>
26
- {
27
- t1.Translate(direction * v * Time.deltaTime);
28
- hist += v * Time.deltaTime;
29
- if (Time.time - stime <= tm)
30
- v += accel1 * Time.deltaTime;
31
- else
32
- v += accel2 * Time.deltaTime;
33
- });
34
- Debug.Log($"経過時間={Time.time - stime}, 移動距離={hist}, v={v}");
35
- }
36
- }
37
-
38
38
  ```