using UnityEngine; using System.Collections.Generic; public class LineColliderCapsules : MonoBehaviour { public LineRenderer lineRenderer; public float colliderRadius = 0.1f; // Adjust based on line width private List colliders = new List(); private void Start() { GenerateColliders(); } private void Update() { UpdateColliders(); } private void GenerateColliders() { // Destroy old colliders foreach (var col in colliders) { Destroy(col); } colliders.Clear(); if (lineRenderer.positionCount < 2) return; for (int i = 0; i < lineRenderer.positionCount - 1; i++) { GameObject colObj = new GameObject("LineSegmentCollider"); colObj.transform.parent = transform; CapsuleCollider capsule = colObj.AddComponent(); capsule.radius = colliderRadius; capsule.height = Vector3.Distance(lineRenderer.GetPosition(i), lineRenderer.GetPosition(i + 1)); capsule.direction = 2; // Z-axis colliders.Add(colObj); } UpdateColliders(); } private void UpdateColliders() { if (lineRenderer.positionCount < 2) return; for (int i = 0; i < colliders.Count; i++) { Vector3 start = lineRenderer.GetPosition(i); Vector3 end = lineRenderer.GetPosition(i + 1); Vector3 midPoint = (start + end) / 2; colliders[i].transform.position = midPoint; colliders[i].transform.LookAt(end); } } }