- Home /
problem moving a prefab object in script (c#)
I have an array called "leftSide" with 5 prefabs in it (this is C#). My code works when using the instantiate version (commented out at the top) but doesn't work if I just try & move the prefab from it's current position. I have made sure all 5 of the prefabs are in the scene to start with. The "if ...else" bits are just generating a random number between 0 & 4 which isn't the object currently being used (this bit works); but the bit that's supposed to move a selected prefab to a specified place (last line) isn't working. It's probably something really obvious, what am I missing please?
//Instantiate (leftSide [Random.Range (0, leftSide.GetLength (0))], transform.position = new Vector3 (-2.505f,nextSide,0), Quaternion.identity);
newLeft = Random.value * 4f;
if ((int)newLeft != currentLeft)
nextLeft = newLeft;
else if (newLeft != 4f)
nextLeft = newLeft+1f;
else nextLeft = 0;
leftSide [(int)nextLeft].transform.position = new Vector3 (-2.505f, nextSide, 0);
Add Debug.log and verify you are getting the (int)nextLeft and nextSide variables you expect; "Isn't working" meaning seems to do nothing, produces errors/weird results?
All the variables work..... I made them public to start with so I can see what they do in the inspector. I also tried using (int)nextLeft in the instantiate (which is also using nextSide which is a y position). The instantiate version works, but the just moving stuff around version doesn't. I get a random left side with instantiate as I go down the screen, but it's blank with the move version. I figured maybe I wasn't referencing it properly or something? The problem with using the instantiate version is that it seems to make the screen "blink", so I thought if they were already there & just moved around it wouldn't do that.
The code you have given is not enough as getyour411 already said. Scene objects and not prefabs. Are you changing actual prefabs (in project tab), if so, it won't change anything in the scene.
Thankyou for you time.... I fixed it. The array I had was a public array with the prefabs in it. I needed to make it a not public array & populate that in Start() using GameObject.FindGameObjectsWithTag so that the script knows where to find them. Thanks ^_^
Your answer
Follow this Question
Related Questions
Transform Checking on all Array Objects (JS) 3 Answers
Simultaneously moving GameObjects using C# script. 3 Answers
How to set to game objects's position from 2 different game objects arrays equal to each other? 0 Answers
How can i get ONLY the childrens of a GameOnbject with GetComponentsInChildren method? 5 Answers