【Unity3D】UGUI虚拟摇杆,最简单实现方式。

1、创建两个Image,修改第一个Image名称为 Background,把第二个Image放入 Background 下 结构如下:

【Unity3D】UGUI虚拟摇杆,最简单实现方式。_第1张图片

2、Background 的图片设置为 Back_04,把 Background 下的 Image 设置为  Joystick_04 效果如下:

【Unity3D】UGUI虚拟摇杆,最简单实现方式。_第2张图片       【Unity3D】UGUI虚拟摇杆,最简单实现方式。_第3张图片     【Unity3D】UGUI虚拟摇杆,最简单实现方式。_第4张图片

3、代码

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.EventSystems;
 5 using UnityEngine.UI;
 6 
 7 public class ScrollCircle : ScrollRect
 8 {
 9     // 半径
10     private float _mRadius = 0f;
11 
12     // 距离
13     private const float Dis = 0.5f;
14 
15     protected override void Start()
16     {
17         base.Start();
18 
19         // 能移动的半径 = 摇杆的宽 * Dis
20         _mRadius = content.sizeDelta.x * Dis;
21     }
22 
23     public override void OnDrag(PointerEventData eventData)
24     {
25         base.OnDrag(eventData);
26             
27         // 获取摇杆,根据锚点的位置。
28         var contentPosition = content.anchoredPosition;
29 
30         // 判断摇杆的位置 是否大于 半径
31         if (contentPosition.magnitude > _mRadius)
32         {   
33             // 设置摇杆最远的位置
34             contentPosition = contentPosition.normalized * _mRadius;
35             SetContentAnchoredPosition(contentPosition);
36         }
37 
38         // 最后 v2.x/y 就跟 Input中的 Horizontal Vertical 获取的值一样 
39         var v2 = content.anchoredPosition.normalized;
40     }
41 }

4、最后把 ScrollCircle 放到 Background 上,把Image拖入content中,完成。

【Unity3D】UGUI虚拟摇杆,最简单实现方式。_第5张图片

转载于:https://www.cnblogs.com/jiuxuan/p/7453762.html

你可能感兴趣的:(【Unity3D】UGUI虚拟摇杆,最简单实现方式。)