Here is my code (not mine, tho)
private void Awake()
{
lineRenderer = GetComponent<LineRenderer>();
}
private void Update()
{
castRay();
}
void castRay()
{
ray = new Ray(transform.position, transform.up);
lineRenderer.positionCount = 1;
lineRenderer.SetPosition(0, transform.position);
count += Time.deltaTime * lineDrawSpeed;
for(int i = 0; i < reflect; i++)
{
Debug.DrawRay(ray.origin, ray.direction * count);
if(Physics.Raycast(ray, out hit, count))
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount - 1, hit.point);
ray = new Ray(hit.point, Vector3.Reflect(ray.direction, hit.normal));
print(hit.distance);
if(hit.transform.tag !="Mirror")
{
break;
}
}
else
{
lineRenderer.positionCount += 1;
lineRenderer.SetPosition(lineRenderer.positionCount -1, ray.origin + ray.direction * count);
}
}
}
and video Raycast(test) - YouTube