UGUI快速實現搖桿功能
阿新 • • 發佈:2019-02-15
搖桿其實就是根據移動的距離,通過一定得比例算出物件的移動方位和距離
這裡我們利用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 = 0 f;
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));
}
}