最近学习,碰到个移动滑杆控制操作的代码,写的不错,在这里和大家分享一下
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相关推荐

  1. Unity3D游戏开发之自由视角下的角色控制

    秦元培的博客:http://blog.csdn.net/qinyuanpei/article/details/39125353 1,[Unity3D]Unity3D游戏开发之角色控制漫谈 2,[Uni ...

  2. Unity3D之UGUI基础10:画布的三种模式

    前文:https://blog.csdn.net/Jaihk662/article/details/87865239(UGUI插件介绍) Canvas组件有三种不同的渲染模式: Screen Spac ...

  3. 龙芯1b(LS1B200)使用LVGL7.0.1组件的滑杆控件控制三色RGB灯的亮度

    需求:通过三个滑杆,分别控制RGB三色灯的红绿蓝颜色.并显示0-100%的滑动数值 在这里我们使用LVGL库的滑杆 (lv_slider)组件来控制数值,并绑定回调事件,在回调事件中控制RGB灯的颜色 ...

  4. Unity3D制作3dRPG游戏——主角移动控制实现

    Unity3D制作3dRPG游戏--主角移动控制实现 目录 Unity3D制作3dRPG游戏--主角移动控制实现 实现原理 具体操作 问题解决 总体代码及效果展示 完整代码(镜头控制由之前的文章修改得 ...

  5. 【UnityUGUIShader】创建材质球Material代码控制更换物体材质球

    UGUI(Unity Graphical User Interface 简称 UGUI,又称图形用户接口)如何创建材质球 NGUI(Next-generation GUI,下一代图形用户接口) Ass ...

  6. UGUI内核大探究(一)EventSystem

    2019独角兽企业重金招聘Python工程师标准>>> UGUI是Unity3D官方推出的UI系统,为了更好的使用UGUI,我们就需要去了解它. UGUI代码开源,我们可以从bitb ...

  7. UGUI组件之Canvas 组件简单笔记

    Canvas 组件介绍 Canvas 组件的用途是用于 UGUI 系统内的 UI 游戏物体的渲染. 如果没有该组件,所有的 UGUI 游戏物体都将无法显示. 而 Canvas 组件本身又分为三种渲染模 ...

  8. 【Unity3D】协同程序

    1 简介 1)协程概念  协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题.协程是 C# 中的概念,由于 Unity3D 的渲染操 ...

  9. [Unity3D]Unity3D游戏开发之继续探索NGUI

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.博主最近开始研究NGUI了,可是说实话,博主感觉NGUI的东西似乎有些分散,因为网上大部分的资 ...

最新文章

  1. python列表输入不加逗号_用python打印不带括号或逗号的列表
  2. win8能开发android的sdk么,win8.1 64位环境搭建android开发环境
  3. 关于map的下标操作的2个例子
  4. $query php,phpQuery让php处理html代码像jQuery一样方便
  5. mysql8.0.12url_使用最新版本MySQL8.0.12报错记录
  6. 诺基亚五摄手机国行版终于来了:下午见!
  7. 【Spring】Spring Bean 生命周期
  8. Python中真的是能使用元组的地方尽量不使用列表吗?
  9. Linux gtk开发教程,使用GTK+和Glade快速开发Linux图形界面
  10. HDU5701 中位数计数【中位数+水题】
  11. 公司管理系列--最难挖的阿里,最好挖的百度;最难走的360,最易走的腾讯
  12. 项目的webinf文件在哪_PMP章节练习(第四章:项目整合管理)
  13. EzCad 二次开发 金橙子激光雕刻机c# 能显示预览图
  14. logistic回归分析优点_漫谈数据分析之建模算法
  15. SECS半导体通信委员会参考书
  16. Django作为微信小程序后端实践
  17. C语言printf输出百分号
  18. 区块链火了 市场热度最么高
  19. 阿里云 ECS windows服务器创建+部署+域名
  20. ios不能保存png_AnyTrans for iOS for Mac (强大的ios设备管理工具)

热门文章

  1. 06-作业练习盒子模型
  2. 跟我学药物设计 | 药物研发的过程和药物设计的意义
  3. Airbnb NYC2019分析实战
  4. make makefile cmake qmake都是什么,有什么区别
  5. MediaCodec之Decoder
  6. PMP-项目采购管理
  7. 1-2、戴尔DELL服务器R730XD配置bios,raid,R720XD安装系统,DELL510配置管理口
  8. SpringSecurity自定义多Provider时提示No AuthenticationProvider found for问题的解决方案与原理(一)
  9. 婚纱纪实类照片调色思路 教你PS洋气的油画效果
  10. 怎样快速将PDF文件旋转