TargetingLine.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using UnityEngine;
  2. public class TargetingLine : MonoBehaviour
  3. {
  4. [Header("Line Settings")]
  5. public Material lineMaterial;
  6. public Color moveLineColor = Color.blue;
  7. public Color attackLineColor = Color.red;
  8. public float lineWidth = 0.1f;
  9. private LineRenderer lineRenderer;
  10. private bool isActive = false;
  11. void Awake()
  12. {
  13. SetupLineRenderer();
  14. }
  15. private void SetupLineRenderer()
  16. {
  17. lineRenderer = gameObject.AddComponent<LineRenderer>();
  18. lineRenderer.material = lineMaterial;
  19. lineRenderer.startWidth = lineWidth;
  20. lineRenderer.endWidth = lineWidth;
  21. lineRenderer.positionCount = 2;
  22. lineRenderer.enabled = false; // Initially hidden
  23. lineRenderer.sortingOrder = 10; // Ensure it renders above other objects
  24. }
  25. public void StartTargeting(Vector3 startPosition)
  26. {
  27. isActive = true;
  28. lineRenderer.enabled = true;
  29. lineRenderer.SetPosition(0, startPosition);
  30. lineRenderer.SetPosition(1, startPosition);
  31. }
  32. public void UpdateTargeting(Vector3 startPosition, Vector3 endPosition, bool isEnemyTarget)
  33. {
  34. if (!isActive) return;
  35. lineRenderer.SetPosition(0, startPosition);
  36. lineRenderer.SetPosition(1, endPosition);
  37. lineRenderer.startColor = isEnemyTarget ? attackLineColor : moveLineColor;
  38. lineRenderer.endColor = isEnemyTarget ? attackLineColor : moveLineColor;
  39. }
  40. public void StopTargeting()
  41. {
  42. isActive = false;
  43. lineRenderer.enabled = false;
  44. }
  45. public bool IsActive => isActive;
  46. }