回答編集履歴

1

回答2を追加

2018/05/19 06:44

投稿

negitama
negitama

スコア943

test CHANGED
@@ -1,3 +1,5 @@
1
+ ### 回答1
2
+
1
3
  1つめのコード、以下のようにしてみてみたらどうでしょうか。
2
4
 
3
5
 
@@ -19,3 +21,105 @@
19
21
  }
20
22
 
21
23
  ```
24
+
25
+
26
+
27
+ ### 回答2
28
+
29
+ 全く別の物ですが、ランダムなターゲットに向かうスクリプトを書いてみました。ご参考まで。
30
+
31
+ [参考動画](https://twitter.com/onionslice2/status/997729377298268167)
32
+
33
+ ```C#
34
+
35
+ using UnityEngine;
36
+
37
+
38
+
39
+ // Enemy オブジェクトにアタッチする
40
+
41
+ public class MoveToRandomTarget : MonoBehaviour
42
+
43
+ {
44
+
45
+ // シーン上に配置されているすべてのFoodオブジェクト
46
+
47
+ private GameObject[] foods;
48
+
49
+
50
+
51
+ // 向かう先
52
+
53
+ private Transform target;
54
+
55
+
56
+
57
+ private void Start ()
58
+
59
+ {
60
+
61
+ // シーン上の、"Food"タグの付けられたオブジェクトをすべて取得する
62
+
63
+ foods = GameObject.FindGameObjectsWithTag ( "Food" );
64
+
65
+
66
+
67
+ SelectRandomTarget ();
68
+
69
+ }
70
+
71
+
72
+
73
+ // ランダムにターゲットを選ぶ
74
+
75
+ private void SelectRandomTarget ()
76
+
77
+ {
78
+
79
+ target = foods[Random.Range ( 0, foods.Length )].transform;
80
+
81
+ }
82
+
83
+
84
+
85
+
86
+
87
+ // 以下は移動の例
88
+
89
+
90
+
91
+ private void FixedUpdate ()
92
+
93
+ {
94
+
95
+ GoToTarget ();
96
+
97
+
98
+
99
+ // 左クリックで新たなターゲットを選択
100
+
101
+ if ( Input.GetMouseButtonDown ( 0 ) )
102
+
103
+ {
104
+
105
+ SelectRandomTarget ();
106
+
107
+ }
108
+
109
+ }
110
+
111
+
112
+
113
+ private void GoToTarget ()
114
+
115
+ {
116
+
117
+ transform.position = Vector3.Lerp ( transform.position, target.position, 0.01f );
118
+
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+ ```