You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1021 B
33 lines
1021 B
using UnityEngine;
|
|
|
|
public class PointArrowInBox : MonoBehaviour
|
|
{
|
|
[SerializeField] Rect viewBox;
|
|
[SerializeField] RectTransform arrow;
|
|
[SerializeField] RectTransform target;
|
|
|
|
Vector2 halfSize;
|
|
|
|
private void Start()
|
|
{
|
|
halfSize = new Vector2(viewBox.width / 2, viewBox.height / 2);
|
|
}
|
|
|
|
private void LateUpdate()
|
|
{
|
|
Vector2 arrowPos = target.anchoredPosition;
|
|
arrowPos.x = Mathf.Clamp(arrowPos.x, viewBox.x - halfSize.x, viewBox.x + halfSize.x);
|
|
arrowPos.y = Mathf.Clamp(arrowPos.y, viewBox.y - halfSize.y, viewBox.y + halfSize.y);
|
|
|
|
float arrowAngle = Mathf.Atan2(target.anchoredPosition.y - viewBox.position.y, target.anchoredPosition.x - viewBox.position.x) * Mathf.Rad2Deg;
|
|
|
|
arrow.anchoredPosition = arrowPos;
|
|
arrow.localEulerAngles = new Vector3(0, 0, arrowAngle);
|
|
}
|
|
|
|
public void SetViewBox(Rect viewBox)
|
|
{
|
|
this.viewBox = viewBox;
|
|
halfSize = new Vector2(viewBox.width / 2, viewBox.height / 2);
|
|
}
|
|
}
|