位置: 编程技术 - 正文

NGUI版虚拟摇杆joystick(虚拟摇杆 安卓)

编辑:rootadmin

推荐整理分享NGUI版虚拟摇杆joystick(虚拟摇杆 安卓),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:虚拟摇杆是什么意思,虚拟摇杆3.0,虚拟摇杆下载安卓,虚拟摇杆手游,虚拟摇杆怎么调,虚拟摇杆3.0,虚拟摇杆3.0,虚拟摇杆3.0,内容如对您有帮助,希望把文章链接给更多的朋友!

view plaincopyusing UnityEngine; using System.Collections; using System.Collections.Generic; [ExecuteInEditMode] public class Joystick : MonoBehaviour { #region Delegate & Event public delegate void JoystickEventHandler(Joystick joystick); /// <summary> /// 开如 /// </summary> public static event JoystickEventHandler On_JoystickMoveStart; /// <summary> /// Occurs when the joystick move. /// </summary> public static event JoystickEventHandler On_JoystickMove; /// <summary> /// thumb偏离中心位置,并牌按住时,每帧的回调 /// </summary> public static event JoystickEventHandler On_JoystickHolding; /// <summary> /// Occurs when the joystick stops move /// </summary> public static event JoystickEventHandler On_JoystickMoveEnd; #endregion #region property [SerializeField] bool isRunInEditor = false; [SerializeField]private string joystickName = "NguiJoystick"; public string JoystickName { get { return this.joystickName; } } [HideInInspector]private bool isLimitInCircle = true; public bool IsLimitInCircle { get { return this.isLimitInCircle; } } [SerializeField]private int radius = ; public int Radius { get{ return this.radius; } } [SerializeField] private float minAlpha = 0.3f; public float MinAlpha { get { return this.minAlpha; } } private Vector2 joystickAxis = Vector2.zero; /// <summary> /// Gets the joystick axis value between -1 & 1... /// </summary> /// <value> /// The joystick axis. /// </value> public Vector2 JoystickAxis { get { return this.joystickAxis; } } private Vector2 lastJoystickAxis = Vector2.zero; public Vector2 LastJoystickAxis { get { return this.lastJoystickAxis; } } bool isForBid = false; /// <summary> /// 判断joystick是否被禁用 /// </summary> public bool IsForBid { get { return this.isForBid; } } bool isHolding = false; public bool IsHolding { get { return this.isHolding; } } #endregion UIWidget root; [SerializeField]UISprite bg; [SerializeField]UISprite thumb; void Awake() { this.name = this.JoystickName; root = this.GetComponent<UIWidget>(); Init(); } // Update is called once per frame void Update () { if (isRunInEditor && Application.isEditor && !Application.isPlaying) { SetJoystickSize(radius); } if (!isForBid && isHolding) { Debug.Log(""); if (On_JoystickHolding != null) { On_JoystickHolding(this); } } } void Init() { bg.transform.localPosition = Vector3.zero; thumb.transform.localPosition = Vector3.zero; SetJoystickSize(radius); Lighting(minAlpha); } #region ngui event ///// <summary> ///// test ///// </summary> //void OnClick () //{ // Debug.Log("mouse pos :" &#; Input.mousePosition &#; " -- touch pos :" &#; ScreenPos_to_NGUIPos(Input.mousePosition)); // thumb.transform.localPosition = ScreenPos_to_NGUIPos(Input.mousePosition); //} void OnPress (bool isPressed) { if (isForBid) { Debug.Log("joystick is forbid!"); return; } Debug.Log("OnPress:" &#; isPressed.ToString()); if(isPressed) { Lighting(1f); CalculateJoystickAxis(); if (On_JoystickMoveStart != null) { On_JoystickMoveStart(this); } isHolding = true; } else { CalculateJoystickAxis(); if (On_JoystickMoveEnd != null) { On_JoystickMoveEnd(this); } thumb.transform.localPosition = Vector3.zero; FadeOut(1f, minAlpha); isHolding = false; } } //void OnDragStart () //{ // if (isForBid) // { // Debug.Log("joystick is forbid!"); // return; // } // Debug.Log("OnDragStart"); // Lighting(1f); // CalculateJoystickAxis(); // if(On_JoystickMoveStart!=null) // { // On_JoystickMoveStart(this); // } // isHolding = true; // Debug.Log(string.Format("time:{0} - axis:{1}", Time.time, joystickAxis)); //} void OnDrag(Vector2 delta) { if (isForBid) { return; } //Debug.Log("OnDrag:"&#;delta.ToString()); CalculateJoystickAxis(); if (On_JoystickMoveStart != null) { On_JoystickMoveStart(this); } } //void OnDragEnd () //{ // if (isForBid) // { // return; // } // Debug.Log("OnDragEnd"); // CalculateJoystickAxis(); // if (On_JoystickMoveEnd != null) // { // On_JoystickMoveEnd(this); // } // thumb.transform.localPosition = Vector3.zero; // FadeOut(1f, minAlpha); // isHolding = false; //} #endregion #region utile /// <summary> /// 计算JoystickAxis /// </summary> /// <returns></returns> void CalculateJoystickAxis() { Vector3 offset = ScreenPos_to_NGUIPos(UICamera.currentTouch.pos); offset -= transform.localPosition; if (isLimitInCircle) { if (offset.magnitude > radius) { offset = offset.normalized * radius; } } thumb.transform.localPosition = offset; lastJoystickAxis = joystickAxis; joystickAxis = new Vector2(offset.x / radius, offset.y / radius); } /// <summary> /// Axis2s the angle. /// </summary> /// <returns> /// The angle. /// </returns> public float Axis2Angle(bool inDegree = true) { float angle = Mathf.Atan2(joystickAxis.x, joystickAxis.y); if (inDegree) { return angle * Mathf.Rad2Deg; } else { return angle; } } /// <summary> /// Axis2s the angle. /// </summary> /// <returns> /// The angle. /// </returns> public float Axis2Angle(Vector2 axis, bool inDegree = true) { float angle = Mathf.Atan2(axis.x, axis.y); if (inDegree) { return angle * Mathf.Rad2Deg; } else { return angle; } } /// <summary> /// 屏幕坐标-->ui坐标 /// </summary> /// <param name="screenPos"></param> /// <returns></returns> Vector3 ScreenPos_to_NGUIPos(Vector3 screenPos) { Vector3 uiPos = UICamera.currentCamera.ScreenToWorldPoint(screenPos); uiPos = UICamera.currentCamera.transform.InverseTransformPoint(uiPos); return uiPos; } /// <summary> /// 屏幕坐标-->ngui坐标 /// </summary> /// <param name="screenPos"></param> /// <returns></returns> Vector3 ScreenPos_to_NGUIPos(Vector2 screenPos) { return ScreenPos_to_NGUIPos(new Vector3(screenPos.x, screenPos.y, 0f)); } /// <summary> /// 设置摇杆的大小 /// </summary> /// <param name="radius"></param> void SetJoystickSize(int radius) { root.width = 2 * radius; root.height = 2 * radius; thumb.width = (int)(f / f * root.width); thumb.height = (int)(f / f * root.height); } /// <summary> /// 点亮摇杆 /// </summary> void Lighting(float alpha) { iTween.Stop(this.gameObject, "value"); root.alpha = alpha; } /// <summary> /// 渐变摇杆的透明度 /// </summary> void FadeOut(float fromAlpha, float toAlpha) { Hashtable itweenArgs = new Hashtable(); itweenArgs.Add("easetype", iTween.EaseType.linear); itweenArgs.Add("from", fromAlpha); itweenArgs.Add("to", toAlpha); itweenArgs.Add("time", 0.5f); itweenArgs.Add("onupdate", "OnFadeOutTween"); iTween.ValueTo(this.gameObject, itweenArgs); } void OnFadeOutTween(float value) { root.alpha = value; } #endregion #region 激活、禁用的控制 List<string> keys = new List<string>(); /// <summary> /// 禁用 /// </summary> /// <returns>返回&#;是,取消这个禁用要用到的key</returns> public string ForbidJosystick() { string key = System.Guid.NewGuid().ToString(); keys.Add(key); isForBid = true; return key; } /// <summary> /// 启用 /// </summary> /// <param name="key"></param> public void ActivizeJosystick(string key) { if(keys.Contains(key)) { keys.Remove(key); } isForBid = true; if(keys.Count==0) { isForBid = false; } } #endregion } 3、demo包,有兴趣的,也可以看看。NGUI版虚拟摇杆joystick(虚拟摇杆 安卓)

下载:

Unity手游之路<十二>手游资源热更新策略探讨

Unity手游之路<十三>手游代码更新策略探讨

unity3d shader 学习笔记1 在unity中我们经常会使用shader,但是从来没有深究过,最近在做项目时遇到相关问题,无从下手,决定系统学习一番,在此前提下把我学习的过程做一个

标签: 虚拟摇杆 安卓

本文链接地址:https://www.jiuchutong.com/biancheng/383553.html 转载请保留说明!

上一篇:unity中可以使一个私有的变量在Inspector面板中显示出来 和 SerializeField的使用(unity或者)

下一篇:Unity手游之路<十二>手游资源热更新策略探讨(手游 unity)

  • 应收利息增加会计分录
  • 小企业计提坏账准备的会计分录怎么写
  • 外资企业的分支机构向总机构支付的管理费如何办理税前列支申请
  • 利润分配包括缴纳所得税吗
  • 安全基金提取标准
  • 积分兑换礼品需要缴纳个人所得税吗
  • 工作过失扣工资合法吗
  • 利息支出税前扣除标准2020
  • 银行本票支付货款,余额退回
  • 增值税发票过期了税金怎么办
  • 贷款厂家贴息
  • 公司购买汽车抵税规则
  • 代开专票需要去报税吗?
  • 金税盘当月买当月不抵扣怎么处理?
  • 什么称为非正数
  • 减税降费在中国 应形成制度性
  • 物业会计科目设置
  • 冲销暂估购入原材料的账务处理?
  • 本年利润余额负数表示什么意思
  • mac app store一直转圈圈
  • 公司购买理财产品账务处理
  • 百度有钱花借钱会上征信吗
  • php字符串定义的三种方式
  • 企业接受母公司代为缴纳税款会计分录
  • 汽车空调不制冷的原因有六种
  • 蟹爪兰的养殖方法和浇水
  • win11玩游戏鼠标卡顿
  • 一只躺在沙滩上的鸟
  • 路由器晚上关了,早上再开信号会好吗?
  • 会计人员填制的记账凭证并不是登记账簿的唯一依据
  • 单目测距精度
  • 应付国库集中支付结余在什么时候确认
  • 劳保用品会计科目进什么科目
  • css字体加粗怎么弄
  • 人脸检测5种方式
  • 固定资产的特征有哪些
  • 车船税每年都要付吗
  • 收到的免税苗木发票必须当月抵扣么
  • mongodb建立索引的命令
  • 企业捐款给公益组织
  • 核定扣除投入产品怎么算
  • 税率为0的发票能用吗
  • 年报资金数额是什么意思
  • 二手车经销管理办法
  • 当月进项发票忘认证又开了销项税额怎么办
  • 融资租赁会计处理实例承租人
  • 工会经费教育经费计提比例
  • 哪些费用计入管理费用开办费
  • 500万以下设备一次性扣除
  • 出口退税进项票跨月勾选
  • 培训发票能抵扣吗
  • 行程单如何验真伪
  • 餐饮业厨师的工资计入主营业务成本吗
  • wp8.1怎么升级wp10
  • cmos密码是什么
  • apache 443
  • linux服务器常用命令
  • win8系统远程桌面在哪里
  • pavmail.exe - pavmail进程是什么文件 有什么用
  • window10耳机有电流
  • javascript中循环结构包括
  • 批处理新建多个文件夹
  • angularjs2
  • 使用jquery
  • vue实现分页功能
  • js发送ajax请求
  • 网页弹窗不见了
  • python scripy
  • JS Timing
  • python操作db2数据库
  • jquery通配符选择器
  • 发票怎能打印
  • 荆州市物业管理
  • 本市可以跨县高考报名吗
  • 河南省地方税务局公告2017年第4号
  • 耕地占用税是土地增值税开发成本吗
  • 伤残补助金要解除合同吗
  • 出口退税函调管理办法
  • 宁波税务干部学校
  • 怎么修改纳税人信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设