Unity使用ScrollRect制作摇杆
本文实例为大家分享了Unity使用ScrollRect制作摇杆的具体代码,供大家参考,具体内容如下
一. 前言
游戏开发中,摇杆功能是很常见的,Unity的UGUI提供了ScrollRect组件,非常适合用来制作摇杆,效果如下:
二. 实现
1. 制作UI
如下,创建Rocker节点和center节点,分别为摇杆的背景图和摇杆的手柄图。
Rocker节点挂上Rocker脚本(代码见文章最后),并赋值Content对象。
设置MovementType为Elastic。
2. 运行Unity进行测试
运行Unity即可测试摇杆功能。
3. Rocker脚本代码
using UnityEngine; using UnityEngine.UI; public class Rocker: ScrollRect { protected float mRadius = 0f; protected override void Start() { base.Start(); //计算摇杆块的半径 mRadius = (transform as RectTransform).sizeDelta.x * 0.5f; } public override void OnDrag(UnityEngine.EventSystems.PointerEventData eventData) { base.OnDrag(eventData); var contentPostion = this.content.anchoredPosition; if (contentPostion.magnitude > mRadius) { contentPostion = contentPostion.normalized * mRadius; SetContentAnchoredPosition(contentPostion); } Debug.Log(contentPostion); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Unity实现简单虚拟摇杆
本文实例为大家分享了Unity虚拟摇杆的简单实现代码,供大家参考,具体内容如下 简单的Unity虚拟摇杆实现,有详细注释. Game界面 Inspector界面 摇杆脚本 public class YaoGanCtrl : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public RectTransform diPan; public RectTransform anNiu; public Vector2 d
-
unity实现手游虚拟摇杆
本文实例为大家分享了unity实现手游虚拟摇杆的具体代码,供大家参考,具体内容如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 绑定到摇杆上的摇杆类,参考半径50 /// </summary> public class Rocker : MonoBehaviour { Vector2 m_o
-
Unity3D基于UGUI实现虚拟摇杆
虚拟摇杆在移动游戏开发中,是很常见的需求,今天我们在Unity中,使用UGUI来实现一个简单的虚拟摇杆功能. 1.打开Unity,新创建一个UIJoystick.cs脚本,代码如下: using UnityEngine; using UnityEngine.EventSystems; public class UIJoystick : MonoBehaviour, IDragHandler, IEndDragHandler { /// <summary> /// 被用户拖动的操纵杆 /// &
-
Unity3D使用UGUI开发原生虚拟摇杆
在Unity3d中开发虚拟摇杆方式有比较多,可以使用EasyTouch.FairyGUI等插件来开发.本文给大家介绍使用Unity3d的原生UGUI来开发出自己的虚拟摇杆,这样可以减少游戏资源包的大小. 先展示下效果图: 现在开发我们的开发 创建一个Image1,并且在Image1创建一个子对象Image2 在Image1中挂载一个自定义脚本,这里我命名为Joystick 脚本代码如下 using System.Collections; using System.Collections.Gene
-
Unity实现虚拟摇杆效果
本文实例为大家分享了Unity实现虚拟摇杆效果的具体代码,供大家参考,具体内容如下 首先添加两者图片 从左到右分别是Back和Front 将Front放到Back中心 在Front身上添加脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;//导入命名空间 public class JoyStick : MonoBehavi
-
Unity实现简单的虚拟摇杆
本文实例为大家分享了Unity实现简单虚拟摇杆的具体代码,供大家参考,具体内容如下 需求:点击创建一个虚拟摇杆底盘,鼠标拖拽时候上方摇杆会跟随鼠标方向移动,并且不会超出摇杆盘范围 *摇杆功能另外实现 UI显示 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RockingIcon : MonoBehaviour { public Transform touchP
-
unity实现手机端摇杆控制人物移动
前言 玩过王者荣耀或者荒野行动的人,都知道,手机左下方或右下方都会有一个摇杆,滑动摇杆可以让人物向360度方向移动.没有玩过的可以看看下方图片(荒野行动手机端为例).本篇就来讲解如何使用unity制作摇杆控制人物移动. 2种方法: 1.GUITexture制作,是unity自带的一个joystick组件,主要由GUITexture和一个JS脚本构成.优点:unity自带,使用简单方便.缺点是无法适应屏幕大小. 2.EasyTouch插件,可以实现1的功能并且克服了1的缺陷,可以适应屏幕大小.本篇
-
Unity UGUI通过摇杆控制角色移动
本文实例为大家分享了Unity UGUI通过摇杆控制角色移动的具体代码,供大家参考,具体内容如下 简单版:控制方块的移动. 进阶版:控制人物的移动 知识铺垫: 首先我们必须要知道,在Unity的UGUI中,对UI的操作有八个回调,分别需要实现八个接口.分别是: 鼠标进入,鼠标离开,鼠标点下,鼠标抬起,鼠标开始拖拽,鼠标拖拽中,拖拽结束 如下所示: 我们可以先对这几个接口方法进行一下测试: 测试结束后,大家就会对这些接口方法有一些初步的了解. using UnityEngine; using Un
-
unity实现虚拟摇杆控制Virtual Joystick
本文实例为大家分享了unity实现虚拟摇杆控的具体代码,供大家参考,具体内容如下 using UnityEngine; using UnityEngine.UI; public class TouchJoystick : MonoBehaviour { public GameObject go;//需要通过虚拟摇杆控制的目标物体 public float moveSpeed = 3;//移动速度 public Image touchPoint;//摇杆轴对象 private Vector3 Or
-
Unity实现虚拟摇杆
本文实例为大家分享了Unity实现虚拟摇杆的具体代码,供大家参考,具体内容如下 面板上设置一些属性,比如摇杆拖拽的距离,是否始终可视,是否限制虚拟摇杆位置(我是把虚拟摇杆限制在了屏幕的左下区域). 使用GetDirAndLength()方法去获得移动的方向和长度即可 using UnityEngine; /// <summary> /// 虚拟摇杆管理器 /// </summary> public class VirtualJoystickManager : MonoBehavio
-
Unity虚拟摇杆的实现方法
本文实例为大家分享了Unity实现虚拟摇杆的具体代码,供大家参考,具体内容如下 设置摇杆的背景图片的锚点如下: 设置摇杆的锚点为背景图片的中心点. 并给摇杆绑定脚本如下: using UnityEngine; using UnityEngine.EventSystems; using System.Collections; using System; public class JoyStickController : MonoBehaviour,IDragHandler,IEndDragHand
随机推荐
- php+mongodb判断坐标是否在指定多边形区域内的实例
- sql 聚集索引和非聚集索引(详细整理)
- vue双向绑定的简单实现
- 轻松理解iOS 11中webview的视口
- 详解react-webpack2-热模块替换[HMR]
- Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
- zf框架db类的分页示例分享
- 获取阴历(农历)和当前日期的js代码
- C#时间格式化(Datetime)用法详解
- C#短时间内产生大量不重复的随机数
- Android编程读取Assets所有文件(遍历每一个文件夹)并存入sdcard的方法
- mysql锁表和解锁语句分享
- vbs打开ie两种方法 在VBScript中启动IE浏览器的实现代码
- linux shell自定义函数(定义、返回值、变量作用域)介绍
- 详解C语言中结构体的自引用和相互引用
- document.all的一个比较完整的总结及案例
- 解读赫夫曼树编码的问题
- cloudstack下libvirtd服务无响应问题
- 下一代Shell脚本语言,Windows Power Shell!
- Java 覆盖equals时总要覆盖hashcode