質問編集履歴

1

原因が違った

2019/11/28 06:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,86 +1,68 @@
1
+ NullReferenceException: Object reference not set to an instance of an object
2
+
3
+ Manager.IsPlaying () (at Assets/Scripts/Manager.cs:46)
4
+
5
+ Emitter+<Start>d__3.MoveNext () (at Assets/Scripts/Emitter.cs:32)
6
+
7
+ UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at C:/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)
8
+
9
+ とエラーが出ていてネットでは、
10
+
11
+ Edit -> Project Settings -> Script Execution Order を選択し、Default Time の下にある + ボタンから Manager を選択して、追加された Manager を Default Time にドラッグ&ドロップして Apply ボタンを押します。
12
+
13
+ と書いていたのでしてみても治らず敵が出てこないままで
14
+
15
+ Manager を Default Time の上にドラッグ&ドロップすると
16
+
1
- hp実装前当たっいたのたらなくなった
17
+ くるようはなるが弾が当たらなくなった
2
18
 
3
19
 
4
20
 
21
+ ```unity
5
22
 
23
+ public class Manager : MonoBehaviour
6
24
 
25
+ {
26
+
7
- ```ここに言語を入力
27
+ //プレイヤープレファブ
28
+
29
+ public GameObject player;
8
30
 
9
31
 
10
32
 
11
- public class Enemy : MonoBehaviour
33
+ //タイトル
12
34
 
13
- {// ヒットポイント
14
-
15
- public int hp = 1;
35
+ private GameObject title;
16
36
 
17
37
 
18
38
 
19
- // Spaceshipコンポーネント
39
+ // Start is called before the first frame update
20
40
 
21
- Spaceship spaceship;
41
+ void Start()
42
+
43
+ {
44
+
45
+ //Titleゲームオブジェクトを検索し取得
46
+
47
+ title = GameObject.Find("Title");
48
+
49
+ }
22
50
 
23
51
 
24
52
 
53
+ // Update is called once per frame
54
+
25
- IEnumerator Start()
55
+ void Update()
26
56
 
27
57
  {
28
58
 
59
+ //ゲーム中でなくタップされたらtrueを返す
29
60
 
30
-
31
- // Spaceshipコンポーネントを取得
32
-
33
- spaceship = GetComponent<Spaceship>();
61
+ if(IsPlaying()==false&& Input.GetButtonDown("Fire1"))
34
-
35
-
36
-
37
- // ローカル座標のY軸のマイナス方向に移動する
38
-
39
- Move(transform.up * -1);
40
-
41
-
42
-
43
- // canShotがfalseの場合、ここでコルーチンを終了させる
44
-
45
- if (spaceship.canShot == false)
46
62
 
47
63
  {
48
64
 
49
- yield break;
65
+ GameStart();
50
-
51
- }
52
-
53
-
54
-
55
- while (true)
56
-
57
- {
58
-
59
-
60
-
61
- // 子要素を全て取得する
62
-
63
- for (int i = 0; i < transform.childCount; i++)
64
-
65
- {
66
-
67
-
68
-
69
- Transform shotPosition = transform.GetChild(i);
70
-
71
-
72
-
73
- // ShotPositionの位置/角度で弾を撃つ
74
-
75
- spaceship.Shot(shotPosition);
76
-
77
- }
78
-
79
-
80
-
81
- // shotDelay秒待つ
82
-
83
- yield return new WaitForSeconds(spaceship.shotDelay);
84
66
 
85
67
  }
86
68
 
@@ -88,122 +70,72 @@
88
70
 
89
71
 
90
72
 
91
- // 機体の移動
92
-
93
- public void Move(Vector2 direction)
73
+ void GameStart()
94
74
 
95
75
  {
96
76
 
77
+ //ゲームスタート時にタイトルを非表示にしてプレイヤーを作成
78
+
79
+ title.SetActive(false);
80
+
97
- GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed;
81
+ Instantiate(player, player.transform.position, player.transform.rotation);
98
82
 
99
83
  }
100
84
 
101
85
 
102
86
 
103
- void OnTriggerEnter2D(Collider2D c)
87
+ public void GameOver()
104
88
 
105
89
  {
106
90
 
107
- //ヤー名取得
91
+ //ゲームオーバー時にタトル表示
108
92
 
109
- string layerName = LayerMask.LayerToName(c.gameObject.layer);
93
+ title.SetActive(true);
94
+
95
+ }
110
96
 
111
97
 
112
98
 
113
- // レイヤー名がBullet (Player)以外の時は何も行わない
99
+ public bool IsPlaying()
114
100
 
101
+ {
102
+
103
+ //ゲーム中かどうかはタイトルの表示非表示で判断
104
+
115
- if (layerName != "Bullet (Player)") return;
105
+ return title.activeSelf == false;
106
+
107
+ }
108
+
109
+
110
+
111
+ }
116
112
 
117
113
 
118
114
 
119
- // PlayerBulletのTransformを取得
115
+ ```
120
116
 
117
+ 先ほど回答でいただいたこちらを試すとconsolにはなにも表示されなかった
118
+
119
+ // ヒットポイントを減らす
120
+
121
+ Debug.Log("HP: " + hp);
122
+
123
+ hp = hp - bullet.power;
124
+
121
- Transform playerBulletTransform = c.transform.parent;
125
+ Debug.Log("HP: " + hp + " / Bullet Power: " + bullet.power);
122
126
 
123
127
 
124
128
 
125
- // Bulletコンポーネントを取得
126
-
127
- Bullet bullet = playerBulletTransform.GetComponent<Bullet>();
128
-
129
-
130
-
131
- // ヒットポイントを減らす
132
-
133
- hp = hp - bullet.power;
134
-
135
-
136
-
137
- // 弾の削除
138
-
139
- Destroy(c.gameObject);
140
-
141
-
142
-
143
- // ヒットポイントが0以下であれば
129
+ // ヒットポイントが0以下であれば
144
130
 
145
131
  if (hp <= 0)
146
132
 
147
133
  {
148
134
 
149
- // 爆発
150
-
151
- spaceship.Explosion();
135
+ Debug.Log("Destroy");
152
-
153
-
154
136
 
155
137
  // エネミーの削除
156
138
 
157
139
  Destroy(gameObject);
158
140
 
159
141
  }
160
-
161
- }
162
-
163
-
164
-
165
-
166
-
167
- public class Bullet : MonoBehaviour
168
-
169
- {
170
-
171
- // 弾の移動スピード
172
-
173
- public int speed = 10;
174
-
175
-
176
-
177
- // ゲームオブジェクト生成から削除するまでの時間
178
-
179
- public float lifeTime = 1;
180
-
181
-
182
-
183
- // 攻撃力
184
-
185
- public int power = 1;
186
-
187
-
188
-
189
- void Start()
190
-
191
- {
192
-
193
- // ローカル座標のY軸方向に移動する
194
-
195
- GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed;
196
-
197
-
198
-
199
- // lifeTime秒後に削除
200
-
201
- Destroy(gameObject, lifeTime);
202
-
203
- }
204
-
205
- }
206
-
207
- ```
208
-
209
- ```