摇杆其实就是根据移动的距离,通过一定得比例算出对象的移动方位和距离
这里我们利用UGUI提供的Scrollrect可快速拿到移动的距离获得(-1, 1)
- 代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ScrollCircle : ScrollRect
{
// 半径
private float _mRadius = 0f;
protected override void Start()
{
base.Start();
_mRadius = content.sizeDelta.x * 0.5f;
}
public override void OnDrag(PointerEventData eventData)
{
base.OnDrag(eventData);
// 获取摇杆,根据锚点的位置。
var contentPosition = content.anchoredPosition;
// 判断摇杆的位置 是否大于 半径
if (contentPosition.magnitude > _mRadius)
{
// 设置摇杆最远的位置
contentPosition = contentPosition.normalized * _mRadius;
SetContentAnchoredPosition(contentPosition);
}
// 最后 v2.x/y 就跟 Input中的 Horizontal Vertical 获取的值一样
var v2 = content.anchoredPosition.normalized;
}
public override void OnEndDrag(PointerEventData eventData)
{
SetContentAnchoredPosition(new Vector2(0, 0));
}
}