- Home /
What is the best way to raycast mutliple rays over a line
I am trying to raycast multiple rays from a line downward just like the picture below. What is the best way to do that? Notice that I don't want to use a box overlap or sphere because I don't want to get hit from the sides.
Answer by Llama_w_2Ls · Mar 28, 2021 at 04:12 PM
Here's a little script that might do just that.
To raycast, you need a start point and a direction. The direction is simply Vector3.Down, but the start point/s needs to be a set of points on the line.
A point can be chosen using the formula: Vector3 point = StartPointOfLine + Direction * DistanceAcrossLine;
This means that, if you wanted a point on a line, 5 units across, you would write: Vector3 point = StartPointOfLine + Direction * 5;
Here's the full implementation for what you're asking for. Hopefully it works, haven't tried it:
// Distance between each raycast
public float Step = 1f;
// Number of rays across the line
public int Rays = 10;
[Header("Line Values")]
public Vector3 StartPoint = Vector3.zero;
public Vector3 Direction = Vector3.right;
void Start()
{
FireRaysOutSideOfLine();
}
void FireRaysOutSideOfLine()
{
for (int i = 0; i < Rays; i++)
{
Vector3 startPoint = StartPoint + Direction * i * Step;
if (Physics.Raycast(startPoint, Vector3.down, out RaycastHit hit))
{
// Raycast from side of line hit something
// Do whatever u want with 'hit'
}
}
}
This script fires 10 rays facing down, each ray 1 unit apart from each other, out of the side of a line facing right. Hope that helps @akyu01