質問編集履歴

2

課題明記

2023/01/27 13:40

投稿

unitybeginner
unitybeginner

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,69 @@
1
1
  Unityを使用して初めて簡易的なFPSシューティングゲームを作成しようとしています。https://xr-hub.com/archives/7782 こちらのサイト様を参考に、球が当たったら敵が破壊する所までは作成できました。
2
- ここから更に敵が破壊されたら、次の敵を出現させたいのですが、破壊された事を認識させ、次のイベントを起こすにはどのようにしたら良いのでしょうか。
2
+ ここから更に敵が破壊されたら、次の敵を出現させたいのですが、破壊された事を認識した後に別スクリプトを起こすにはどのようにしたら良いのでしょうか。
3
3
  ``
4
4
 
5
5
  ```ここに言語名を入力
6
- C#
6
+ C#
7
+ DestroyObject
8
+
9
+ using System.Collections;
10
+ using System.Collections.Generic;
11
+ using UnityEngine;
12
+
13
+ public class DestroyObject : MonoBehaviour {
14
+
15
+ public int damage; //当たった部位毎のダメージ量
16
+ private GameObject enemy; //敵オブジェクト
17
+ private HP hp; //HPクラス
18
+
19
+ void Start()
20
+ {
21
+ enemy = GameObject.Find("Enemy"); //敵情報を取得
22
+ hp = enemy.GetComponent<HP>(); //HP情報を取得
23
+ }
24
+
25
+ void OnTriggerEnter(Collider other){
26
+
27
+ //ぶつかったオブジェクトのTagにShellという名前が書いてあったならば(条件).
28
+ if (other.CompareTag("Shell")){
29
+
30
+ //HPクラスのDamage関数を呼び出す
31
+ hp.Damage(damage);
32
+
33
+ //ぶつかってきたオブジェクトを破壊する.
34
+ Destroy(other.gameObject);
35
+ }
36
+ }
37
+ }
38
+
39
+ HP
40
+
41
+ using System.Collections;
42
+ using System.Collections.Generic;
43
+ using UnityEngine;
44
+
45
+ public class HP : MonoBehaviour {
46
+
47
+ public int hitPoint = 100; //HP
48
+
49
+ // Update is called once per frame
50
+ void Update () {
51
+
52
+ //HPが0になったときに敵を破壊する
53
+ if (hitPoint <= 0)
54
+ {
55
+ Destroy(gameObject);
56
+ }
57
+
58
+ }
59
+
60
+ //ダメージを受け取ってHPを減らす関数
61
+ public void Damage(int damage)
62
+ {
63
+ //受け取ったダメージ分HPを減らす
64
+ hitPoint -= damage;
65
+ }
66
+ }
7
67
  ```
8
68
 
9
69
  ### 試したこと

1

試したことの追記

2023/01/27 11:40

投稿

unitybeginner
unitybeginner

スコア0

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,17 @@
8
8
 
9
9
  ### 試したこと
10
10
 
11
+ using UnityEngine;
11
- ここに問題に対して試したことを記載してください。
12
+ using UnityEngine.Events;
13
+ public class DeleteObject : MonoBehaviour {
14
+ public UnityEvent OnDestroyed = new UnityEvent();
15
+ private void OnDestroy(){
16
+ Debug.Log("Destroyed");
17
+ OnDestroyed.Invoke();
18
+ }
19
+ }
20
+
21
+ (敵)に対して弾が当たった際に破壊されたことを認識させるところまでは出来ました。が、その認識を受けて次の(敵)を出現させる方法がどうしても分からなかった為質問させていただきました。初心者ですがアドバイスよろしくお願いいいたします。
12
22
 
13
23
  ### 補足情報(FW/ツールのバージョンなど)
14
24