Hello,
I need help in positioning and evenly scaling my 9x9 grid made up of 64x72 tiles in the iPhone5(640x1136) screen.
The main camera size settings is set to 5.68, the background is 640x1136 and the screen res is set to iPhone 5 tall (9:16).
Here is the code I am using to create and position the grid, bear in mind I am a beginner in C #:
public class SDASynergyFactory : MonoBehaviour {
const float tileWidth = 64.0f; // 32 for non retina
const float tileHeight = 72.0f; // 36
public GameObject synergyPrefab;
// Helper method that positions the 9x9 grid in lower left side of screen
private Vector3 PointForColumnAndRow(int column, int row){
Vector3 screenToPoint = new Vector3((float)column * tileWidth + tileWidth/2 ,(float)row * tileHeight + tileHeight/2 ,0);
Vector3 worldPos = Camera.main.ScreenToWorldPoint(screenToPoint);
return worldPos;
}
// Instantiate prefab, and make it a child of SDASynergyFactory then position SDASynergyFactory to the middle of screen.
public void AddSpriteForSynergys(HashSet<SDASynergy> synergys){
foreach(SDASynergy synergy in synergys){
Sprite sprite = Resources.Load<Sprite>("Sprites/" + synergy.SpriteName());
synergy.sprite = sprite;
synergyPrefab.GetComponent<SpriteRenderer>().sprite = synergy.sprite;
synergyPrefab.name = synergy.SpriteName();
synergyPrefab = Instantiate(synergyPrefab,PointForColumnAndRow(synergy.column,synergy.row),Quaternion.identity) as GameObject;
synergyPrefab.transform.parent = this.transform;
}
Vector3 screenMidPos = new Vector3(Screen.width/2,Screen.height/2,10);
Vector3 midpoint = Camera.main.ScreenToWorldPoint(screenMidPos);
transform.position = midpoint;
}
// Position SDASynergyFactory to the middle of the 9x9 grid.
void Start () {
Vector3 synergyLayerMidPos = new Vector3((float)SDALevel.numColumns * tileWidth/2,(float)SDALevel.numRows * tileHeight/2,0);
Vector3 worldPos = Camera.main.ScreenToWorldPoint(synergyLayerMidPos);
transform.position = worldPos;
}
}
Code outputs this image:
The desired result:
Thanks in advance.

