回答編集履歴

1

コメントを受けて追記

2018/05/08 08:35

投稿

sakura_hana
sakura_hana

スコア11425

test CHANGED
@@ -21,3 +21,61 @@
21
21
  `yield return SmoothMovement(end);`などとすると処理完了を待つようになります。
22
22
 
23
23
  また、コールバックを設定してそれを受け取りつつ次の処理をするようにしてもいいと思います。
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ (コメントを受けて追記)
32
+
33
+ 以下はyield returnにしたスクリプト例です。
34
+
35
+ ```C#
36
+
37
+ //敵の攻撃動作
38
+
39
+ IEnumerator EnemyAction () {
40
+
41
+
42
+
43
+ //~(中略)~
44
+
45
+
46
+
47
+ //ここで1/2にするとそもそも動かなくなる
48
+
49
+ float halfX = xDir;
50
+
51
+ float halfY = yDir;
52
+
53
+
54
+
55
+ //現在地→プレイヤーへ
56
+
57
+ Vector2 start = transform.position;
58
+
59
+ Vector2 end = start + new Vector2(halfX, halfY);
60
+
61
+
62
+
63
+ //StartCoroutineから変更
64
+
65
+ yield return SmoothMovement(end);
66
+
67
+ yield return SmoothMovement(start);
68
+
69
+
70
+
71
+ boxCollider.enabled = true;
72
+
73
+ }
74
+
75
+ ```
76
+
77
+
78
+
79
+ コールバックのやり方は「[Kamanii Square - Unity - コールバックの記述まとめ](http://kamanii-square.tumblr.com/post/157016046583/unity-callback)」などを参考にどうぞ。
80
+
81
+ (SmoothMovement内部にて、一番最後に登録したメソッドを呼ぶイメージです)