回答編集履歴

3

回答を差し替えました。

2018/10/21 08:08

投稿

退会済みユーザー
test CHANGED
@@ -1,61 +1,33 @@
1
- ここが問題の箇所です。「既に破壊された敵機に対して、その他の敵機のうちより近のを探す」ということをされていすよね。ここで、既に破壊され敵機はいないわけで、nowEnemy.transformを参照できずエラーになっているのですよね
1
+ __※エラーの箇所を誤解していで、回答差し替えた。__
2
2
 
3
3
 
4
4
 
5
+ 回答の前に1点指摘を。
6
+
5
7
  ```C#
6
8
 
7
- GameObject searchTag(GameObject nowEnemy,string tagName){
9
+ GameObject searchTag(GameObject nowEnemy,string tagName){ // nowEnemyではなく、
8
10
 
9
- float tmpDis = 0;
10
-
11
- float nearDis = 0;
12
-
13
- GameObject targetObj = null;
14
-
15
-
16
-
17
- foreach (GameObject obs in GameObject.FindGameObjectsWithTag(tagName)) {
11
+ GameObject searchTag(GameObject player,string tagName){ // playerでは?
18
-
19
- tmpDis = Vector2.Distance (obs.transform.position, nowEnemy.transform.position);
20
12
 
21
13
  ```
22
14
 
23
15
 
24
16
 
25
- ということはnullの場合の処理を書けばよいとおもいませんか?
17
+ 本題です。
26
-
27
- というわけで、nullの場合(ターゲットが撃破されている場合)は、敵機一覧の最初の敵を仮の候補として用意します。次のような感じです。
28
18
 
29
19
 
30
20
 
31
- ```C#
32
-
33
- GameObject searchTag(GameObject nowEnemy,string tagName){
21
+ > エラー箇所はVector3 diff = (nearEnemy.transform.position - this.transform.position);の方でした。
34
-
35
- float tmpDis = 0;
36
-
37
- float nearDis = 0;
38
-
39
- GameObject targetObj = null;
40
22
 
41
23
 
42
24
 
43
- // ここから変更あり
44
-
45
- var enemies = GameObject.FindGameObjectsWithTag(tagName);
46
-
47
- if (nowEnemy == null) {
48
-
49
- nowEnemy = enemies[0]; // 適当書いてで、[0]じゃなかもしれません
25
+ nearEnemyがどの時点でnullかデバッガ確認しその原因を調べたり考えたりしてみてくださ
50
-
51
- }
52
-
53
- foreach (GameObject obs in enemies) {
54
-
55
- // 変更ここまで
56
-
57
- ```
58
26
 
59
27
 
60
28
 
61
- 苦言はなく、アドバイスのですがエラーはちゃんと理解するとよいですよ。コードのどこエラーがていかを確認し、どういったエラーか、ぜそのエラーがでたのかということを調べどの仕組みよくなかったかを考えることをしなければなりせん。エラーっては、「よくわからないがとりあえずこうとけ」と解決する場合もなくはないですが、基本的にはコードを組んだ側仕組みの問題ですので、なんわからないけどエラーでた みたいな感想はいろいろ調べて、それでもわからなかった後になります。
29
+ 予想すがおそらく、敵機が0にった結果searchTagメソッドのGameObject.FindGameObjectsWithTag(tagName)の部分取得敵機がtargetObj初期値nullのまってしまったのかなと思います。
30
+
31
+
32
+
33
+ もしそうであれば、敵機がいない場合はそちらを向かないよう、if文で制御すればいいかと思います。

2

エラーへの対処について

2018/10/21 08:07

投稿

退会済みユーザー
test CHANGED
@@ -55,3 +55,7 @@
55
55
  // 変更ここまで
56
56
 
57
57
  ```
58
+
59
+
60
+
61
+ 苦言ではなく、アドバイスなのですが、エラーはちゃんと理解するとよいですよ。コードのどこでエラーがでているかを確認し、どういったエラーか、なぜそのエラーがでたのかということを調べ、どの仕組みがよくなかったのかを考えることをしなければなりません。エラーによっては、「よくわからないがとりあえずこうしとけ」と解決する場合もなくはないですが、基本的にはコードを組んだ側の仕組みの問題ですので、なんかわからないけどエラーでた みたいな感想はいろいろ調べて、それでもわからなかった後になります。

1

微修正

2018/10/21 04:32

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ここが問題の箇所です。「既に破壊された敵機に対して、その他の敵機のうちより近いものを探す」ということをされていますよね。ここで、既に破壊された敵機はいないわけで、nowEnemyを参照できずnull参照でエラーになっているのですよね。
1
+ ここが問題の箇所です。「既に破壊された敵機に対して、その他の敵機のうちより近いものを探す」ということをされていますよね。ここで、既に破壊された敵機はいないわけで、nowEnemy.transformを参照できずエラーになっているのですよね。
2
2
 
3
3
 
4
4