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 一款简单的虚拟摇...