LinePathUnit.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using Unity.Mathematics;
  5. using Unity.VisualScripting;
  6. using UnityEngine;
  7. using UnityEngine.EventSystems;
  8. using XCharts.Runtime;
  9. public class LinePathUnit : MonoBehaviour
  10. {
  11. public string startPos;
  12. public string endPos;
  13. public static float orderZ = 0.01f;
  14. public GameObject lineRenderer;
  15. void Start()
  16. {
  17. }
  18. public void SetPath(Vector3 start, Vector3 end)
  19. {
  20. this.transform.position = start;
  21. Vector3 direction = end - start;
  22. Vector3 up = Vector3.up; // (0,1,0)
  23. // 计算夹角
  24. float angle = Vector3.Angle(direction, up);
  25. // 使用叉积来判断方向
  26. Vector3 crossProduct = Vector3.Cross(direction, up);
  27. if (crossProduct.z < 0)
  28. {
  29. angle = 360 - angle;
  30. }
  31. //print(angle);
  32. float distance = Vector3.Distance(end, start) * 1.02f;
  33. this.transform.localScale = new Vector3(1, distance / 2, 1);
  34. this.transform.eulerAngles = new Vector3(1, 1, -angle);
  35. //this.transform.localPosition = new Vector3(this.transform.localPosition.x, this.transform.localPosition.y, orderZ++);
  36. }
  37. public void SetColor(Color color,Color color1) {
  38. this.lineRenderer.GetComponent<MeshRenderer>().material.SetColor("_Color1",color);
  39. this.lineRenderer.GetComponent<MeshRenderer>().material.SetColor("_Color2", color1);
  40. }
  41. private void Update()
  42. {
  43. if (CameraManager.instance.secondCamera != null)
  44. {
  45. float dyScale = CameraManager.instance.secondCamera.GetComponent<CameraBirdSec>().currentDistance / 14;
  46. dyScale = math.clamp(dyScale, 0.5f, 5f);
  47. this.transform.localScale = new Vector3(dyScale, this.transform.localScale.y, dyScale);
  48. this.lineRenderer.GetComponent<MeshRenderer>().material.SetTextureScale("_MainTex", new Vector2(1, this.transform.localScale.y * 10 / this.transform.localScale.x));
  49. }
  50. }
  51. }