![](https://i-blog.csdnimg.cn/blog_migrate/797adbd862f458d8bfe1d70012bcf84d.png)
使用方法
if (Rocker.offset != Vector2.zero)
{
transform.LookAt(new Vector3(Rocker.offset.x, 0, Rocker.offset.y) + transform.position);
transform.Translate(transform.forward * Time.deltaTime);
ani.SetBool("run", true);
}
可以复制的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Rocker : MonoBehaviour,IDragHandler,IEndDragHandler
{
public static Vector2 offset;
RectTransform handle, rock;
float r;
// Start is called before the first frame update
void Start()
{
rock = transform.Find("bar").GetComponent<RectTransform>();
handle = GetComponent<RectTransform>();
r = handle.rect.width < handle.rect.height ? handle.rect.width / 2 : handle.rect.height / 2;
}
public void OnDrag(PointerEventData eventData)
{
Vector2 pos = eventData.position - handle.anchoredPosition;
rock.anchoredPosition = Vector2.ClampMagnitude(pos, r);
offset = rock.anchoredPosition / r;
}
public void OnEndDrag(PointerEventData eventData)
{
rock.anchoredPosition = Vector2.zero;
offset = Vector2.zero;
}
}