O problema é basicamente este:
O LineRenderer está tentando conectar as posições dos pontos vermelhos. Está criando os vértices verdes para fazer uma malha. Portanto, o segmento de primeira linha parece ótimo. Mas o LineRenderer tenta ser econômico, reutilizando os vértices do final de um segmento de linha no final do segundo segmento de linha. Quando há um ângulo agudo, você obtém o problema que está vendo. O segundo segmento de linha é comprimido na interseção porque sua 'tampa final' não é perpendicular a sua outra 'tampa final'.
A solução é criar seu próprio renderizador de linha e não torná-lo tão econômico. Você pode fazer isso gerando uma malha dinâmica . A malha consistirá em uma série de quadriláteros finos. Para cada segmento de linha, você pode calcular os quatro cantos do quad calculando o normal da linha e uma largura de linha especificada:
Vector3 normal = Vector3.Cross(start, end);
Vector3 side = Vector3.Cross(normal, end-start);
side.Normalize();
Vector3 a = start + side * (lineWidth / 2);
Vector3 b = start + side * (lineWidth / -2);
Vector3 c = end + side * (lineWidth / 2);
Vector3 d = end + side * (lineWidth / -2);
Aqui, a
, b
, c
e d
compõem os quatro cantos de um único segmento de linha, assim como os pontos verdes na imagem acima. Esses vértices seriam adicionados à malha e você também adicionaria os índices para transformar os quatro vértices em dois triângulos (assim, seis índices seriam adicionados, abc e bdc).
Obviamente, isso pode ficar bastante complexo. Acredito que outra razão pela qual a Unity tenha implementado o LineRenderer da maneira que eles fizeram foi porque fazê-lo dessa maneira evita outro problema, os cantos. Quando você começa a desenhar cada segmento de linha, começa a ver onde os dois segmentos de linha se juntam e formam uma junção feia. Existem maneiras de lidar com isso calculando o normal compartilhado entre as duas linhas e atualizando seus vértices para o normal compartilhado, mas isso resolve apenas parcialmente o problema, pois você ainda pode acabar facilmente com linhas comprimidas. A solução mais robusta é gerar vértices adicionais nas juntas para atuar como cantos.