回答編集履歴
1
formatting
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
|
-
|
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
|
-
|
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
|
```
|