質問するログイン新規登録

回答編集履歴

3

スクリプトの追加

2016/10/31 05:53

投稿

退会済みユーザー
answer CHANGED
@@ -4,4 +4,44 @@
4
4
  `GameObject.Find`で取得できるオブジェクトは、親子関係などのつながりがなくても取得できますが、アクティブなオブジェクトに限定されます。
5
5
 
6
6
  `game_object02`をpublicな変数(あるいは[System.Serializable]属性)にして、インスペクタから対象のGameObjectを設定するか、
7
- プレハブにして、プレハブからインスタンス化して取得したのち、非アクティブ化するのが手っ取り早いのではないでしょうか。
7
+ プレハブにして、プレハブからインスタンス化して取得したのち、非アクティブ化するのが手っ取り早いのではないでしょうか。
8
+
9
+ ```C#
10
+ using UnityEngine;
11
+ using System.Collections;
12
+
13
+ public class mvcam_new3 : MonoBehaviour
14
+ {
15
+ public Vector3 pos = new Vector3(-11, 0, 0);
16
+ private GameObject game_object01 = null;
17
+ private GameObject game_object02 = null;
18
+ public GameObject game_object02_prefab;
19
+ public void Start()
20
+ {
21
+ game_object01 = GameObject.Find("Sphere100");
22
+ // プレハブをインスタンス化して、game_object02に代入
23
+ game_object02 = (GameObject) Instantiate (game_object02_prefab,transform.position,transform.rotation);
24
+ game_object02.SetActive(false);
25
+ }
26
+ void Update()
27
+ {
28
+
29
+ if (Input.GetKeyDown(KeyCode.Space) && pos.z < 300)
30
+ { //spaceキーの入力があり、かつx座標が300以下の場合にという条件文
31
+ pos.z += 30; //x座標を+30する(移動する)
32
+ transform.position = pos; //位置更新
33
+ print(transform.position.z); //コンソールを開くと座標が今どこにいるのかわかるのか書いてくれる
34
+ }
35
+ else if (Input.GetKeyDown(KeyCode.Space) && pos.z >= 300)
36
+ {
37
+ pos.z = 0;
38
+ transform.position = pos;
39
+ print(transform.position.z);
40
+ game_object01.SetActive(false);
41
+ //game_object02.SetActive(true);
42
+ game_object02.SetActive(true);
43
+ //game_object02.transform.gameObject.SetActive(true);
44
+ }
45
+ }
46
+ }
47
+ ```

2

情報の追加

2016/10/31 05:53

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,7 @@
1
1
  `Transform.Find`で取得できるのは、アクティブ・非アクティブに関わらず子オブジェクトのみです。
2
2
  `Transform.Find("Child/hoge")`でhogeが取得できるのは、自身がChildの親オブジェクトの場合のみです。
3
3
 
4
- `GameObject.Find`で取得できるオブジェクトは、親子関係などのつながりがなくても取得できますが、アクティブなオブジェクトに限定されます。
4
+ `GameObject.Find`で取得できるオブジェクトは、親子関係などのつながりがなくても取得できますが、アクティブなオブジェクトに限定されます。
5
+
6
+ `game_object02`をpublicな変数(あるいは[System.Serializable]属性)にして、インスペクタから対象のGameObjectを設定するか、
7
+ プレハブにして、プレハブからインスタンス化して取得したのち、非アクティブ化するのが手っ取り早いのではないでしょうか。

1

誤字の修正

2016/10/30 21:14

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- `Transform.Find`でアクティブ・非アクティブに関わらず、取得できるのは子オブジェクトのみです。
1
+ `Transform.Find`で取得できるのは、アクティブ・非アクティブに関わらず子オブジェクトのみです。
2
2
  `Transform.Find("Child/hoge")`でhogeが取得できるのは、自身がChildの親オブジェクトの場合のみです。
3
3
 
4
4
  `GameObject.Find`で取得できるオブジェクトは、親子関係などのつながりがなくても取得できますが、アクティブなオブジェクトに限定されます。