質問編集履歴

2

呼び出すメソッドの追記。CreateCube()でcubeを返すように。エラー文。

2020/04/05 14:27

投稿

ATTOMAN
ATTOMAN

スコア40

test CHANGED
File without changes
test CHANGED
@@ -22,21 +22,21 @@
22
22
 
23
23
  よろしくお願いします。
24
24
 
25
- ![](2b36ad9da90795bdf7dd11b07865e34a.jpeg)
25
+ ![イメージ説明](60a01544971e80916ee6efb4aa7c3222.jpeg)
26
26
 
27
- ```C#
27
+ ```GameSystem
28
28
 
29
29
  public class GameSystem : MonoBehaviour
30
30
 
31
31
  {
32
32
 
33
- //prefabを格納する配列変数
33
+ //すべてのprefabを格納する配列変数
34
34
 
35
- GameObject[] cubes;
35
+ public GameObject[] cubes;
36
36
 
37
- //取り出したprefabを格納する変数
37
+ //取り出したprefabを格納する変数
38
38
 
39
- public GameObject cube;
39
+ // public GameObject cube;
40
40
 
41
41
 
42
42
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  //Cube(prefab)の生成
62
62
 
63
- public void CreateCube()
63
+ public GameObject CreateCube()
64
64
 
65
65
  {
66
66
 
@@ -70,16 +70,90 @@
70
70
 
71
71
  //乱数生成し変数cubeの中にそのprefabを入れる
72
72
 
73
- cube = cubes[Random.Range(0, cubes.Length)];
73
+ GameObject cubePrefab = cubes[Random.Range(0, cubes.Length)];
74
74
 
75
75
  Debug.Log("乱数生成完了。");
76
76
 
77
77
  //Cube生成
78
78
 
79
- Instantiate( cube, new Vector3(500f, 101.5f, 495f),Quaternion.identity );
79
+ GameObject cube = Instantiate( cubePrefab, new Vector3(500f, 101.5f, 495f),Quaternion.identity );
80
80
 
81
81
  Debug.Log("Cube生成完了。");
82
82
 
83
+ return cube;
84
+
83
85
  }
84
86
 
87
+
88
+
89
+ //
90
+
91
+
92
+
93
+ }
94
+
85
95
  ```
96
+
97
+ CreateCube()を呼び出すCubeクラスです(一部)。コライダーで検知し、Invokeで呼び出します。
98
+
99
+ ```Cube
100
+
101
+
102
+
103
+ private void OnCollisionEnter(Collision collision)
104
+
105
+ {
106
+
107
+ //着地したか判定
108
+
109
+ if (collision.gameObject.tag == "Table" ||
110
+
111
+ collision.gameObject.tag == "Cube" ||
112
+
113
+ collision.gameObject.tag == "Terrain")
114
+
115
+ {
116
+
117
+
118
+
119
+ //Cube生成メソッド呼び出す
120
+
121
+ if (!onTable)
122
+
123
+ {
124
+
125
+ onTable = true;
126
+
127
+ Invoke("Create",3f );
128
+
129
+ //子オブジェクト①のCameraMouseスクリプトを無効化
130
+
131
+ transform.GetChild(0).gameObject.GetComponent<CameraMouse>().enabled = false;
132
+
133
+ }
134
+
135
+ Debug.Log("着地しやした");
136
+
137
+ }
138
+
139
+
140
+
141
+ //Cube生成
142
+
143
+ public void Create()
144
+
145
+ {
146
+
147
+ //Cube生成メソッド呼び出し
148
+
149
+ gameSystem.CreateCube();
150
+
151
+ //このスプリクトを無効化
152
+
153
+ this.GetComponent<Cube>().enabled = false;
154
+
155
+ }
156
+
157
+
158
+
159
+ ```

1

説明の改善

2020/04/05 14:27

投稿

ATTOMAN
ATTOMAN

スコア40

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ◎問題点
12
12
 
13
- 配列の中にGameObjectが格納されるところまではできているのですが、別のメソッドで呼び出すと
13
+ Awake()で配列の中にGameObjectが格納されるところまではできているのですが、別のメソッドで呼び出すと
14
14
 
15
15
  「配列の中には何も入ってない」
16
16