- Home /
Trying to Instantiate gameobjects via code... getting plenty of errors
I have 5 gameobjects named Platform1, Platform2, etc. all the way to 5. Within the Platform gameobjects are sprites (setup for as various platforming sections. I want to use code to add all 5 in to an array, randomize them and then lay them out on the scene from end to end. Here is the code which I attached to all of the Platform gameobjects:
using UnityEngine;
using System.Collections;
public class LoadLevel : MonoBehaviour {
public GameObject[] myPlatformPieces; //Assign platform pieces in the inspector
private Vector3 myPos; //Shorter way to grab the position of this platform
// Use this for initialization
void Start () {
myPos = transform.postion; //Grab our position
for (int x = 0; x < 2; x++){
Instantiate(myPlatforms[Random.Range(0,myPlatforms.Length)], new Vector3(myPos.x * (x+1), myPos.y, myPos.z), Quaternion.identity);
}
}
// Update is called once per frame
void Update () {
}
}
I get the following errors:
Assets/Scripts/LoadLevel.cs(13,35): error CS1061: Type UnityEngine.Transform' does not contain a definition for
postion' and no extension method postion' of type
UnityEngine.Transform' could be found (are you missing a using directive or an assembly reference?)
Assets/Scripts/LoadLevel.cs(16,37): error CS0103: The name myPlatforms' does not exist in the current context Assets/Scripts/LoadLevel.cs(16,25): error CS1502: The best overloaded method match for
UnityEngine.Object.Instantiate(UnityEngine.Object, UnityEngine.Vector3, UnityEngine.Quaternion)' has some invalid arguments
Assets/Scripts/LoadLevel.cs(16,25): error CS1503: Argument #1' cannot convert
object' expression to type `UnityEngine.Object'
Any ideas?
Where does myPlatforms comes from? Is it suppose to be $$anonymous$$yPlatformPieces?
Answer by Ekta-Mehta-D · Aug 14, 2014 at 09:55 AM
using UnityEngine;
using System.Collections;
public class LoadLevel : MonoBehaviour {
public GameObject[] myPlatforms; //Assign platform pieces in the inspector
private Vector3 myPos; //Shorter way to grab the position of this platform
// Use this for initialization
void Start () {
myPos = transform.position; //Grab our position
for (int x = 0; x < 2; x++){
Instantiate(myPlatforms[Random.Range(0,myPlatforms.Length)], new Vector3(myPos.x * (x+1), myPos.y, myPos.z), Quaternion.identity);
}
}
// Update is called once per frame
void Update () {
}
}
Copy this code. THere was mistake in gameobject array name.
On this line:
Instantiate(myPlatforms[Random.Range(0,myPlatforms.Length)], new Vector3(myPos.x * (x+1), myPos.y, myPos.z), Quaternion.identity);
I get the following error:
IndexOutOfRangeException: Array index is out of range. LoadLevel.Start () (at Assets/Scripts/LoadLevel.cs:14)
This error is consistent with myPlatforms having a length of 0.
Either check if the length is 0 and abort, or set the length to be some value greater then 0
Your answer
Follow this Question
Related Questions
info about sprites in 2d 1 Answer
Platforms are been generated more and more to the left or right 0 Answers
2D Platform Generation: Spawning Platforms Consecutively 3 Answers
Instantiate GameObject at Random time is not working 1 Answer
How do I make a clone of a prefab appear on the correct layer? [5.2.2f1] 1 Answer