void GridRayCast(CollisionData collisionData, Vector3 direction) { collisionData.hasHit = false; for (int x = 0; x < gridSize; x++) { for (int y = 0; y < gridSize; y++) { float xx = GameMath.CenterAlign(gridSize, spread.x, x); float yy = y * spread.y; Vector3 startPosition = transform.position + transform.right * xx + transform.up * yy + transform.TransformDirection(offset); Ray ray = new Ray(startPosition, direction); RaycastHit info; if (Physics.Raycast(ray, out info, forwardRaycastLength, collidingLayerMask)) { Debug.DrawRay(ray.origin, ray.direction * forwardRaycastLength, Color.red); collisionData.collider = info.collider; collisionData.hasHit = true; } else { Debug.DrawRay(ray.origin, ray.direction * forwardRaycastLength, Color.green); } } } }