移动滑杆控制(UGUI实现)Unity3D
最近学习,碰到个移动滑杆控制操作的代码,写的不错,在这里和大家分享一下
UI:
首先用UGUI创建个滑杆
做好UI,添加个脚本,脚本中需要实现三个接口分别是:
功能主要是实现拖拽和起始、结束时所触发的事件,具体可以在官网了解一下。
- 滑杆要实现的功能有滑杆会出现手点击屏幕的位置,中心点(即控制角色移动)会随拖拽而移动,手离开屏幕滑杆会归回原位。
代码实现如下:
public class TouchDrag : MonoBehaviour, IDragHandler,IPointerDownHandler,IPointerUpHandler
{public Transform touchPoint;public Transform touchBg;private Vector2 startPos;private float pointDis;//滑杆半径private void Update(){//这一步是为了解决滑杆半径可能会随屏幕变化而改变的自适应操作//我的前面文章也有类似的介绍pointDis = Screen.height * 1.0f / Constants.ScreenStandardHeight * Constants.ScreenOPDis;}public void OnDrag(PointerEventData eventData){//半径长度Vector2 r = eventData.position-(Vector2)touchBg.position;float len = r.magnitude;//中心点是否超过滑杆半径//超过则做出限制if(len>pointDis){r = Vector2.ClampMagnitude(r, pointDis);touchPoint.position = (Vector2)touchBg.position + r;}else{//没有超出圆盘,正常赋值触碰位置touchPoint.position = eventData.position;}}public void OnPointerDown(PointerEventData eventData){/* 这里可以看出eventData.position的坐标和Input.mousePosition是相同的Debug.Log("Evenpos: " + eventData.position);Debug.Log("Mousepos: " + Input.mousePosition);*/startPos = touchBg.position;touchBg.position = eventData.position;}public void OnPointerUp(PointerEventData eventData){//结束 将圆盘归位touchPoint.localPosition = Vector3.zero;touchBg.position = startPos;}
}
上述代码已给出详细注释。自适应那里,如果是按一定分辨率播放的话,可以不做处理直接赋值半径长度即可。 主要是拖拽时的处理让人头凉,这种处理应该还不错。
移动滑杆控制(UGUI实现)Unity3D相关推荐
- Unity3D游戏开发之自由视角下的角色控制
秦元培的博客:http://blog.csdn.net/qinyuanpei/article/details/39125353 1,[Unity3D]Unity3D游戏开发之角色控制漫谈 2,[Uni ...
- Unity3D之UGUI基础10:画布的三种模式
前文:https://blog.csdn.net/Jaihk662/article/details/87865239(UGUI插件介绍) Canvas组件有三种不同的渲染模式: Screen Spac ...
- 龙芯1b(LS1B200)使用LVGL7.0.1组件的滑杆控件控制三色RGB灯的亮度
需求:通过三个滑杆,分别控制RGB三色灯的红绿蓝颜色.并显示0-100%的滑动数值 在这里我们使用LVGL库的滑杆 (lv_slider)组件来控制数值,并绑定回调事件,在回调事件中控制RGB灯的颜色 ...
- Unity3D制作3dRPG游戏——主角移动控制实现
Unity3D制作3dRPG游戏--主角移动控制实现 目录 Unity3D制作3dRPG游戏--主角移动控制实现 实现原理 具体操作 问题解决 总体代码及效果展示 完整代码(镜头控制由之前的文章修改得 ...
- 【UnityUGUIShader】创建材质球Material代码控制更换物体材质球
UGUI(Unity Graphical User Interface 简称 UGUI,又称图形用户接口)如何创建材质球 NGUI(Next-generation GUI,下一代图形用户接口) Ass ...
- UGUI内核大探究(一)EventSystem
2019独角兽企业重金招聘Python工程师标准>>> UGUI是Unity3D官方推出的UI系统,为了更好的使用UGUI,我们就需要去了解它. UGUI代码开源,我们可以从bitb ...
- UGUI组件之Canvas 组件简单笔记
Canvas 组件介绍 Canvas 组件的用途是用于 UGUI 系统内的 UI 游戏物体的渲染. 如果没有该组件,所有的 UGUI 游戏物体都将无法显示. 而 Canvas 组件本身又分为三种渲染模 ...
- 【Unity3D】协同程序
1 简介 1)协程概念 协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题.协程是 C# 中的概念,由于 Unity3D 的渲染操 ...
- [Unity3D]Unity3D游戏开发之继续探索NGUI
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.博主最近开始研究NGUI了,可是说实话,博主感觉NGUI的东西似乎有些分散,因为网上大部分的资 ...
最新文章
- python列表输入不加逗号_用python打印不带括号或逗号的列表
- win8能开发android的sdk么,win8.1 64位环境搭建android开发环境
- 关于map的下标操作的2个例子
- $query php,phpQuery让php处理html代码像jQuery一样方便
- mysql8.0.12url_使用最新版本MySQL8.0.12报错记录
- 诺基亚五摄手机国行版终于来了:下午见!
- 【Spring】Spring Bean 生命周期
- Python中真的是能使用元组的地方尽量不使用列表吗?
- Linux gtk开发教程,使用GTK+和Glade快速开发Linux图形界面
- HDU5701 中位数计数【中位数+水题】
- 公司管理系列--最难挖的阿里,最好挖的百度;最难走的360,最易走的腾讯
- 项目的webinf文件在哪_PMP章节练习(第四章:项目整合管理)
- EzCad 二次开发 金橙子激光雕刻机c# 能显示预览图
- logistic回归分析优点_漫谈数据分析之建模算法
- SECS半导体通信委员会参考书
- Django作为微信小程序后端实践
- C语言printf输出百分号
- 区块链火了 市场热度最么高
- 阿里云 ECS windows服务器创建+部署+域名
- ios不能保存png_AnyTrans for iOS for Mac (强大的ios设备管理工具)