一、虚拟摇杆的建立
1.创建摇杆UI
如图:建立三层(原形都是Image)
第一层:用于控制摇杆在界面中的位置
第二层:用于控制摇杆轮盘样式
第三层:用于显示摇杆方向
其中第一层设置为透明色,而第二、三层设置为圆形,并各自设置颜色
最重要的部分:
1.为第一层的图片添加Scroll Rect组件(本摇杆就是利用该组件的回弹的特性)
2.拖动第三层到Content中
\3. 组件中的Elasticity为回弹速度,根据个人修改
建议:
1.关闭组件中的Inertia选项
第一层的面板
Content
Inertia
Elasticity
此时已经完成一个简单的摇杆示例了,下面是个人编写的一个四个方向的判断代码
二、简单代码编写
1.简单的方向判断代码(仅四个方向)
可添加**Event Trigger组件(仅适用于UI),用其中的PointerDown(点击按下)和PointerUp(点击抬起)**来实现下列方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| bool IsInputDown = false;//是否按下摇杆 Vector3 DownPoint;//按下的点 Vector3 UpPoint;//抬起时的点 /// <summary> /// 鼠标按下 /// </summary> public void GetMouseDownPoint() { DownPoint = Input.mousePosition;//获取按下的点 IsInputDown = true; } /// <summary> /// 鼠标抬起 /// </summary> public void GetMouseUpPoint() { IsInputDown = false; }
/// <summary> /// 鼠标拖动方向 /// </summary> public void MousePositon() { //抬起或拖动时的点 UpPoint = Input.mousePosition; //计算拖动距离 Vector2 Offset = UpPoint - DownPoint; //拖动距离 float distance = 20; if (Mathf.Abs(Offset.x) > distance || Mathf.Abs(Offset.y) > distance) { //左右平移 if (Mathf.Abs(Offset.x) > Mathf.Abs(Offset.y)) { if (Offset.x < 0)//左移 { // Debug.Log("左"); } else//右移 { // Debug.Log("右"); } } else//上下平移 { if (Offset.y > 0) { // Debug.Log("前"); } else { // Debug.Log("下"); } } }
}
|
原文参考链接:
https://blog.csdn.net/xinzhilinger/article/details/108647567