- Home /
Instantiate Primitive Code Stopping Unexpectedly
Hey guys,
I am having a little trouble with this code here. It is suppost to 'generate' cubes until it makes a larger square, but for some reason, it stopps with 4 cubes up, and 5 to the right... for the life of me, I can't figure out why! I really appreciate any help on this one, guys!
Here is the code I am using:
using UnityEngine;
using System.Collections;
//Written By Gibson Bethke ][ GBStudios
public class LoadQuadrateCode : MonoBehaviour {
public GameObject block;
public int iUp = 0;
public int iToTheRight = 0;
public int iBack = 0;
void Start () {
InvokeRepeating("Load", 1, 0.2F);
}
void Load () {
if(iBack == 5 && iUp == 5 && iToTheRight == 5) {
CancelInvoke();
}
if(iUp == 5 && iToTheRight < 4){
iUp = 0;
iToTheRight ++;
}
if(iUp == 5 && iToTheRight == 5 && iBack < 4) {
iBack ++;
iUp = 0;
iToTheRight = 0;
}
if(iUp < 5) {
Instantiate(block, new Vector3(iToTheRight, iUp * 1.0F, iBack), Quaternion.identity);
iUp ++;
}
}
}
Again, any help is appreciated
-Gibson
Answer by AVividLight · Aug 02, 2011 at 05:27 PM
I am not quite sure what fixed it, but I got it working...
using UnityEngine;
using System.Collections;
//Written By Gibson Bethke ][ GBStudios
public class LoadQuadrateCode : MonoBehaviour {
public GameObject block;
public float loadingSpeed = 0.05F;
public bool doneLoading = false;
public int iUp = 0;
public int iToTheRight = 0;
public int iBack = 0;
void Start () {
InvokeRepeating("Load", 1, loadingSpeed);
}
void Load () {
if(iUp == 5 && iToTheRight == 5 && iBack ==5) {
doneLoading = true;
CancelInvoke();
}
if(iUp == 5 && iToTheRight < 5){
iUp = 0;
iToTheRight ++;
}
if(iUp == 5 && iToTheRight == 5 && iBack < 5) {
iBack ++;
iUp = 0;
iToTheRight = 0;
}
if(iUp < 5) {
Instantiate(block, new Vector3(iToTheRight, iUp * 1.0F, iBack), Quaternion.identity);
iUp ++;
}
}
}
Answer by iwaldrop · Mar 29, 2012 at 04:28 AM
I see this is kind of an old question. I hope you found a solution, but for those who've never gotten this to work I would recommend changing the GameObject variable type at the top of your code to whatever the name of the class is that is controlling it. In my case, I was making waypoints, so:
Waypoint waypoint;
...
w = Instantiate(waypoint, hit.point, Quaternion.identity) as Waypoint;
Now I can do whatever I want with my waypoint, like passing it off to a list of waypoints, or assigning other variables to it before I initialize it.
Your answer
Follow this Question
Related Questions
InvokeRepeating firing too often 1 Answer
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
Instantiate ground/enemies 1 Answer
instantiating vertically 2 Answers