質問編集履歴
1
原因が違った
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
|
-
|
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
|
-
|
33
|
+
//タイトル
|
12
34
|
|
13
|
-
{// ヒットポイント
|
14
|
-
|
15
|
-
p
|
35
|
+
private GameObject title;
|
16
36
|
|
17
37
|
|
18
38
|
|
19
|
-
// S
|
39
|
+
// Start is called before the first frame update
|
20
40
|
|
21
|
-
|
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
|
-
|
55
|
+
void Update()
|
26
56
|
|
27
57
|
{
|
28
58
|
|
59
|
+
//ゲーム中でなくタップされたらtrueを返す
|
29
60
|
|
30
|
-
|
31
|
-
// Spaceshipコンポーネントを取得
|
32
|
-
|
33
|
-
s
|
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
|
-
|
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
|
-
|
73
|
+
void GameStart()
|
94
74
|
|
95
75
|
{
|
96
76
|
|
77
|
+
//ゲームスタート時にタイトルを非表示にしてプレイヤーを作成
|
78
|
+
|
79
|
+
title.SetActive(false);
|
80
|
+
|
97
|
-
|
81
|
+
Instantiate(player, player.transform.position, player.transform.rotation);
|
98
82
|
|
99
83
|
}
|
100
84
|
|
101
85
|
|
102
86
|
|
103
|
-
void O
|
87
|
+
public void GameOver()
|
104
88
|
|
105
89
|
{
|
106
90
|
|
107
|
-
//
|
91
|
+
//ゲームオーバー時にタイトルを表示
|
108
92
|
|
109
|
-
|
93
|
+
title.SetActive(true);
|
94
|
+
|
95
|
+
}
|
110
96
|
|
111
97
|
|
112
98
|
|
113
|
-
|
99
|
+
public bool IsPlaying()
|
114
100
|
|
101
|
+
{
|
102
|
+
|
103
|
+
//ゲーム中かどうかはタイトルの表示非表示で判断
|
104
|
+
|
115
|
-
i
|
105
|
+
return title.activeSelf == false;
|
106
|
+
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
}
|
116
112
|
|
117
113
|
|
118
114
|
|
119
|
-
|
115
|
+
```
|
120
116
|
|
117
|
+
先ほど回答でいただいたこちらを試すとconsolにはなにも表示されなかった
|
118
|
+
|
119
|
+
// ヒットポイントを減らす
|
120
|
+
|
121
|
+
Debug.Log("HP: " + hp);
|
122
|
+
|
123
|
+
hp = hp - bullet.power;
|
124
|
+
|
121
|
-
|
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
|
-
|
129
|
+
// ヒットポイントが0以下であれば
|
144
130
|
|
145
131
|
if (hp <= 0)
|
146
132
|
|
147
133
|
{
|
148
134
|
|
149
|
-
// 爆発
|
150
|
-
|
151
|
-
|
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
|
-
```
|