Masalahnya pada dasarnya adalah ini:
LineRenderer sedang mencoba untuk menghubungkan posisi titik merah. Ini menciptakan simpul hijau untuk membuat mesh. Jadi segmen garis atas tampak hebat. Tapi kemudian LineRenderer mencoba menjadi ekonomis, ia menggunakan kembali simpul dari ujung segmen satu baris di akhir segmen baris kedua. Ketika ada sudut yang tajam, Anda mendapatkan masalah yang Anda lihat. Segmen baris kedua terjepit di persimpangan karena 'tutup ujung' tidak tegak lurus dengan 'tutup ujung' lainnya.
Solusinya adalah membuat pembuat baris sendiri, dan tidak membuatnya jadi ekonomis. Anda dapat melakukan ini dengan menghasilkan mesh dinamis . Mesh akan terdiri dari serangkaian paha depan tipis. Untuk setiap segmen garis, Anda dapat menghitung empat sudut quad dengan menghitung normal garis dan lebar garis yang ditentukan:
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);
Di sini, a
, b
, c
dan d
membuat empat sudut dari segmen garis tunggal, seperti titik-titik hijau pada gambar di atas. Verteks ini akan ditambahkan ke jala, dan Anda juga akan menambahkan indeks untuk membuat empat simpul menjadi dua segitiga (jadi, enam indeks akan ditambahkan, abc dan bdc).
Ini jelas bisa menjadi agak rumit. Saya percaya alasan lain Unity menerapkan LineRenderer mereka dengan cara yang mereka lakukan adalah karena melakukannya dengan cara itu menghindari masalah lain, sudut. Saat Anda mulai menggambar setiap segmen garis, Anda akan mulai melihat di mana kedua segmen garis itu menyatu dan membentuk sambungan yang jelek. Ada beberapa cara untuk mengatasinya dengan menghitung normal bersama di antara kedua garis dan memperbarui simpulnya ke normal bersama, tetapi ini hanya menyelesaikan sebagian masalah, karena Anda masih dapat dengan mudah berakhir dengan garis terjepit. Solusi paling kuat adalah dengan menghasilkan simpul tambahan pada sambungan untuk bertindak sebagai sudut.