2d isometric tile-based game system help?

Hi there,

I am working on a 2d tile based system with a 3d camera set at a 45 degree angle to look isometric. I have the following code working which will generate the level.

some Code
var blockPiece:GameObject[]; // fill this
var debugMat:Material;
var pieces: GameObject[ , ];

var width = 20;
var length = 20;

private var levelArray:int[] = [7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                    		    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
	                            0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
	                            0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
	                            0,0,0,0,1,1,1,1,1,1,6,6,1,1,1,1,0,0,0,0,
	                            0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
	                            0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
	                            0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	                            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
function Awake() {
    generateTiles();
}

function generateTiles(){
pieces = new GameObject[width, length]; // creates the object array
  
for(z=0; z<length; z++){
  for(x=0; x<width; x++){
        
    var prefab: GameObject;
    
    // Set pefab to be inLibrary prefab based on level array
    prefab = blockPiece[levelArray[z*width + x]];
    
    // Add piece to stage
    pieces[x,z] = Instantiate (prefab, Vector3(x,1,(z*-1)), Quaternion.Euler(0, 180,   0));
	//pieces[x, z].renderer.material = debugMat;
	
       }
    }
}

function Start(){
    // Do rotateBlocks function
}

Everything works in terms of generating the level, feel free to use the code if you like.

My problem is that I don’t know where to go from here. How do I set certain pieces to be corners?. I also can’t seem to find a good way to access and know a blocks type for running other commands. Any ideas?

You need a tile class which holds information about the tile such as its type, material, if it’s solid, etc…

Attach that script to your tile prefab, and then each instance of your tile will hold information about its self which you can access.