LineRaycast.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // MIT License
  2. // https://gitlab.com/ilnprj
  3. // Copyright (c) 2020 ilnprj
  4. using UnityEngine;
  5. namespace RadarComponents
  6. {
  7. /// <summary>
  8. /// Line 2DRaycast with circle rotation
  9. /// </summary>
  10. public class LineRaycast : MonoBehaviour
  11. {
  12. [SerializeField]
  13. private Vector3 rotationVector = default;
  14. [SerializeField]
  15. private float speed = default;
  16. [SerializeField]
  17. private float distanceRay = 75f;
  18. private void Update()
  19. {
  20. transform.Rotate(rotationVector * speed);
  21. Debug.DrawRay(transform.position, GetVectorFromAngle(transform.eulerAngles.z) * distanceRay, Color.green);
  22. RaycastHit2D hit = Physics2D.Raycast(transform.position, GetVectorFromAngle(transform.eulerAngles.z), distanceRay);
  23. if (hit.collider != null)
  24. {
  25. //FIXME: Raycast need one shot, this creates many nasty calls :(
  26. hit.collider.GetComponent<TweenAlphaImage>().StartLerp();
  27. }
  28. }
  29. private Vector3 GetVectorFromAngle(float angle)
  30. {
  31. float angleRad = angle * (Mathf.PI / 180f);
  32. return new Vector3(Mathf.Cos(angleRad), Mathf.Sin(angleRad));
  33. }
  34. }
  35. }