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

浙公网安备 33010602011771号