Why isn’t this code working when i try to print out tileRight it says null
its all in start function so i can declare all this before the game starts, they are all pretty much global vars to
var monsterOnMe : GameObject;
var tileRight : GameObject;
var tileUp : GameObject;
var tileLeft: GameObject;
var tileDown : GameObject;
var floorMap : GridMaker;
var myX;
var myY;
var xNext: int;
var yNext: int;
var xBack: int;
var yBack: int;
var canPlace : boolean;
var getGridPoint : GuiStart;
function Start ()
{
canPlace = true;
// see if towers can be placed on that gridfloor
getGridPoint = GameObject.Find("Controller").GetComponent(GuiStart);
//Make Sure Controller is always called Controller!!!!
var findTotalRows = GameObject.Find("Controller").GetComponent(GridMaker);
floorMap = GameObject.Find("Controller").GetComponent(GridMaker);
for(var i : int = 0; i < findTotalRows.gridX; i++)
{
for (var j : int = 0; j < findTotalRows.gridY; j++)
{
if(floorMap.map[i,j].name == this.name)
{
myX = i;
myY = j;
}
}
}
xNext = myX + 1;
yNext = myY + 1;
xBack = myX - 1;
yBack = myY - 1;
tileUp = floorMap.map[myX,yNext];
tileDown = floorMap.map[myX,yBack];
tileLeft = floorMap.map[xBack,myY];
tileRight = floorMap.map[xNext,myY];
}
hope this makes more sense now.
GridMaker.JS
var instantiateObject : GameObject;
var gridX = 10;
var gridY = 10;
var map : GameObject[,];
function Start () {
map = new GameObject[gridX,gridY];
for ( var x = 0; x < gridX; x++){
for (var y = 0; y < gridY; y++){
var myName = Instantiate(instantiateObject, Vector3(x *.5,0,y * .5), Quaternion.identity);
myName.name = "x: " + x + "y: " + y;
map[x,y] = myName;
//Debug.Log(map[x,y]);
}
}
}
GuiStart.JS
var gridPoint : GameObject;
// do raycast
var hit : RaycastHit;
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if ( Physics.Raycast( ray, hit, 100 ) ){
if (hit.collider.CompareTag("gridFloor")){
gridPoint = hit.collider.gameObject;
}
}