using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
//用ScrollCircle代替ScrollRect组件,达到在一个圆形范围内拖动的效果
public class ScrollCircle : ScrollRect {
protected float mRadius = 0f;
protected float mWidth, bWidth, contentWidth;
// Use this for initialization
protected override void Start () {
base.Start();
//bWidth 为整个摇杆宽度占画布宽度的比例
bWidth = (transform as RectTransform).anchorMax.x - (transform as RectTransform).anchorMin.x;
//contentWidth为摇块宽度占摇杆背景宽度的比例
contentWidth = content.anchorMax.x - content.anchorMin.x;
GetRadius();
}
// Update is called once per frame
void Update()
{
GetRadius();
}
public override void OnDrag(PointerEventData eventData)
{
base.OnDrag(eventData);
var contentPosition = this.content.anchoredPosition;
if (contentPosition.magnitude > mRadius)
{
contentPosition = contentPosition.normalized * (mRadius);
SetContentAnchoredPosition(contentPosition);
}
}
//获取摇块能够移动的范围
public void GetRadius()
{
//mWidth 为整个摇杆的宽度
mWidth = transform.GetComponentInParent<Canvas>().pixelRect.width * bWidth;
//mRadius 为摇块能够移动的最大距离
mRadius = mWidth * 0.5f * (1 - contentWidth);
}
}
虚拟摇杆
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 背景 公司最近在做无人机这方面的项目,App操作界面上有两个控制飞机的虚拟摇杆,在网上翻了翻,基本上都是用coco...
- 由于昨天写的匆忙,有一些细节的地方没注意到,今天就在昨天的基础上做一点补充。 ---iOS 一款简单的虚拟摇...