摇杆其实就是根据移动的距离,通过一定得比例算出对象的移动方位和距离
这里我们利用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));
}
}
Unity摇杆控制
本文介绍如何使用Unity UI的ScrollRect组件实现摇杆控制。通过计算摇杆移动距离和方向,限制其在一定范围内,并在拖动结束时复位。适用于游戏开发中角色移动等场景。
558

被折叠的 条评论
为什么被折叠?



