using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Rocker : MonoBehaviour,IDragHandler,IEndDragHandler
{
static Vector2 offest;
public RectTransform big;
public RectTransform small;
float r;
public void OnDrag(PointerEventData eventData)
{
Vector2 pos = eventData.position - big.anchoredPosition;
small.anchoredPosition = Vector2.ClampMagnitude(pos, r);
offest = small.anchoredPosition / r;
}
public void OnEndDrag(PointerEventData eventData)
{
small.anchoredPosition = Vector2.zero;
offest = Vector2.zero;
}
// Start is called before the first frame update
void Start()
{
big = GetComponent<RectTransform>();
r = big.rect.width < big.rect.height ? big.rect.width / 2 : big.rect.height / 2;
}
}
这个Big是外面绿色的大圈,而这个中心可移动的小圈则是褐色的。而我们默认的情况下俩个的锚点都是中心点,如果说你在写完代码拖拽时中心小球一直在向右上角移动就将Big的锚点调到左下角就可以随意调动。