- 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