Position in grid
Hi, I'm making a farm game and I'm trying to accomplish that when one of the buttons is pressed for a new plant, the plant is 'planted' on the first spot in a grid. And when that first place on the grid is full, it is placed on the next spot, etc. Is there an easy way to do this? I now have a drag and drop system but it isn't really working for me. I think it's more efficient to place the plants automatically instead of manually. I hope you can help me :)
Answer by MerryAce123 · Oct 01, 2015 at 08:34 AM
Well so we need to make a variable which would track the first position available in the grid. So basically every time we 'plant' the plant the variable adds 1 to its x value and if it reaches the limit which could also be defined like the size of our grid it sets its x value back to 0 and adds 1 to its y value. So if the limit is 10 we basically have 10x10 grid with 100 squares. And when we 'plant' the plant, we will look at the value of our availability variable and plant it there. Here is the code:
private Vector2 counter = 0;
public int limit = 10; // This is the size of our grid
public GameObject plant;
public int squareSize = 16;
public void Plant() { // This is your plant function
Instantiate (plant, new Vector3( (int)counter.x*squareSize,
0,
(int)counter.y*squareSize),
Quaternion.identity); // We instantiate our plant in a position according to the counter which has to be multiplied by a size of each square in the grid
if(counter.x < limit) //
counter.x += 1;
else {
counter.x = 0;
counter.y += 1;
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612035542im_/https://answers.unity.com/themes/thub/images/avi.jpg)