Попробуйте этот код, адаптированный из https://docs.unity3d.com/ScriptReference/Physics.Raycast.html, используя ваши значения:
RaycastHit hit;
Vector3 startPoint = new Vector3(transform.position.x, transform.position.y + 0.4f, transform.position.z);
if (Physics.Raycast(startPoint, rotation, out hit, Mathf.Infinity))
{
Debug.DrawRay(startPoint, rotation * hit.distance, Color.yellow);
Debug.Log("Did Hit");
}
else
{
Debug.DrawRay(startPoint, rotation * 1000, Color.white);
Debug.Log("Did not Hit");
}
Вот это GIF из теста, который я сделал.
Это всего лишь тест, чтобы определить, связана ли проблема с расстоянием между лучами.
Вместо этого вы также можете использовать Debug.DrawLine, а затем установить конечную точку с тем же расстоянием, которое используется в RayCast.
Vector3 startPoint = new Vector3(transform.position.x, transform.position.y + 0.4f, transform.position.z);
if (Physics.Raycast(startPoint, rotation, out hit, rayDistance))
{
Debug.DrawLine(startPoint, startPoint + rotation * rayDistance, Color.green);
}
else Debug.DrawLine(startPoint, startPoint + rotation * rayDistance, Color.red);
Другой GIF , использующий этот код.
Если он все еще не работает, попробуйте проверить столкновение матриц.
Не забывайте, чтоВы также можете использовать маску слоя в своем Raycast.:)