- Home /
 
How do I instantiate a prefab B in same place prefab A?
I click once to instantiate A, then I click again so that B is instantiated in the same place where I have begotten A. I tried this code but it did not work.
 if (AmountA > 0 && StateMouse == 0)
                 {
                 Instantiate(PrefabA, LocalItem.position, LocalItem.rotation);  //Ok, He left the correct place, and is on the scene.        
         AmountA--; 
                 }
                 
                 StateMouse++;
                 
                 if (StateMouse == 2)// new click, instance B
                 {        
                    StateMouse = 0;
                    Rigidbody ne = GameObject.Instantiate(PrefabB, PrefabA.transform.position, PrefabA.transform.rotation) as Rigidbody; //<<<Wrong place 
                    GameObject.Destroy(PrefabA);    // Destroy A            
                    
                 }
 
              Answer by DaveA · Nov 19, 2012 at 11:13 PM
 GameObject a;
 
 void Update()
 
 if (AmountA > 0 && StateMouse == 0)
                 {
                 a = (GameObject)Instantiate(PrefabA, LocalItem.position, LocalItem.rotation);  //Ok, He left the correct place, and is on the scene.
                 AmountA--; 
                 }
 
                 StateMouse++;
 
                 if (StateMouse == 2)// new click, instance B
                 {     
                    StateMouse = 0;
                    Rigidbody ne = GameObject.Instantiate(PrefabB, a.transform.position, PrefabA.transform.rotation) as Rigidbody; //<<< right place 
                    Destroy(a); // Destroy A         
 
                 }
 
              don't work, About line "a= Instantiate(PrefabA ......);" "error CS0266: Cannot implicitly convert type `UnityEngine.Object' to `UnityEngine.GameObject'. An explicit conversion exists"
1- Debug return position (0.0,0.0,0.0) and 'PrefabB' is instantiated in the center of the scene;
2- This code is in "player" (if this is a problem, you know, He moves, change coordenades...);
3- GameObject.Destroy(a); Isn't deleted too;
PS.: I'm working with C#. Obviously I converted your javascript but still did not work.
Edited my response. Note the cast (GameObject)Instantiate. a should appear at LocalItem.position, thus have the same coordinates. So if LocalItem moves, that's going to be different. I don't see where you set LocalItem.
Thanks, now it works.
this "(GameObject)" was the solution.
I think this is like writing that is "as GameObject" at the end of the sentence.
Because the code must convert "Object" in "GameObject". Am I right?
Your answer
 
             Follow this Question
Related Questions
How to destroy a game object within an instance of prefab 1 Answer
Two Instances of same Prefab dealing damage to each other. 0 Answers
How do I re-link an object that has unintentionally become detached from prefab? 0 Answers
Script uses transform.position of Prefab instead of Instance 1 Answer
How to do not apply fields in prefab 1 Answer