- Home /
Question by
Nothematic · Dec 31, 2014 at 10:46 AM ·
gameobjectraycast
Getting GameObject from a grid (array) using raycasters
So I have an array of GameObjects that is created when the game is started using the following code:
void Awake () {
for (int x = 0; x < width; x++) {
for (int z = 0; z < height; z++) {
GameObject grid = (GameObject)Instantiate(gridPiece);
grid.transform.position = new Vector3(gridPiece.transform.position.x - x, 0, gridPiece.transform.position.z + z);
grid.transform.parent = gameObject.transform;
}
}
}
When I press play GameObjects are spawned as expected in a grid over a plane. I want to get the GameObject that the mouse is over. To do that I'm using raycasts:
void Update () {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// Casts the ray and get the first game object hit
Physics.Raycast(ray, out hit);
Debug.Log("This hit at " + hit.point);
}
I then plan to use this to get the GameObject:
private Vector3 getNearestPoint(Vector3 _point){
int x = Mathf.RoundToInt (_point.x);
int y = Mathf.RoundToInt (_point.y);
int z = Mathf.RoundToInt (_point.z);
Vector3 nearestPoint = new Vector3(x,y,z);
return nearestPoint;
}
private GameObject objectFromPosition(Vector3 _point){
int x = (int)_point.x;
int z = (int)_point.z;
GameObject tile = grid[x,z];
return tile;
}
However I'm getting an error saying that array index is out of bounds for GameObject tile = grid[x,z];
If anyone has any ideas as to why this might be, or how I might be able to achieve the same goal in a better way, that'd be greatly appreciated. Thanks!
Comment