回答編集履歴

2

書式の改善

2020/02/19 10:22

投稿

MasujimaRyohei
MasujimaRyohei

スコア422

test CHANGED
@@ -107,3 +107,15 @@
107
107
  }
108
108
 
109
109
  ```
110
+
111
+
112
+
113
+ でもこれ、懸念点があるとすれば、
114
+
115
+ LookAt_Podクラスが複数あると、
116
+
117
+ 複数のLookAt_Podが全員、敵を全検索してしまうので、
118
+
119
+ やはりSerchEnemy関数はEnemyManagerのようなもので持っておいて、
120
+
121
+ LookAt_Podにセットする形がふさわしいかなと思います!

1

回答の追加

2020/02/19 10:22

投稿

MasujimaRyohei
MasujimaRyohei

スコア422

test CHANGED
@@ -15,3 +15,95 @@
15
15
  pod.SetTargetObj(enemyManager.SerchEnemy());
16
16
 
17
17
  ```
18
+
19
+
20
+
21
+
22
+
23
+ また、単純にLookAt_PodクラスにSerchEnemy関数を実装しちゃえば
24
+
25
+ こんな感じでできそう
26
+
27
+ ```C#
28
+
29
+ using System.Collections;
30
+
31
+ using System.Collections.Generic;
32
+
33
+ using UnityEngine;
34
+
35
+
36
+
37
+ public class LookAt_Pod : MonoBehaviour
38
+
39
+ {
40
+
41
+ public GameObject BulletPrefab;
42
+
43
+ public float bulletSpeed;
44
+
45
+ public float span = 1f;
46
+
47
+ private int timeCount = 0;
48
+
49
+ private GameObject targetObj; // 注視したいオブジェクト
50
+
51
+
52
+
53
+ void Update()
54
+
55
+ {
56
+
57
+ this.transform.LookAt(SerchEnemy().transform);
58
+
59
+
60
+
61
+ timeCount += 1;
62
+
63
+
64
+
65
+ if (timeCount > span)
66
+
67
+ {
68
+
69
+ timeCount = 0;
70
+
71
+ // 敵の弾を生成する
72
+
73
+ GameObject Bullet = Instantiate(BulletPrefab, transform.position, Quaternion.identity);
74
+
75
+
76
+
77
+ Rigidbody BulletRb = Bullet.GetComponent<Rigidbody>();
78
+
79
+
80
+
81
+ // 弾をforwardに飛ばす
82
+
83
+ BulletRb.AddForce(transform.forward * bulletSpeed);
84
+
85
+
86
+
87
+ // 3秒後に弾を削除する。
88
+
89
+ Destroy(Bullet, 3.0f);
90
+
91
+ }
92
+
93
+ }
94
+
95
+
96
+
97
+ GameObject SerchEnemy(string enemy)
98
+
99
+ {
100
+
101
+ // 省略
102
+
103
+ }
104
+
105
+
106
+
107
+ }
108
+
109
+ ```