当前位置: 首页 > news >正文

福田网站建设论文结论wordpress信息量几百万

福田网站建设论文结论,wordpress信息量几百万,响应式网站制作工具,网址大全黄页男女免费手游里面很多类型的游戏都需要用到遥感功能,例如王者荣耀,和平精英等,之前的摇杆功能都是用类似于Easy Touch的插件进行开发的,今天不借助任何插件来实现虚拟摇杆的功能。 一般虚拟摇杆的组成都是由轮盘和遥感的点组成&#xff0c…

手游里面很多类型的游戏都需要用到遥感功能,例如王者荣耀,和平精英等,之前的摇杆功能都是用类似于Easy Touch的插件进行开发的,今天不借助任何插件来实现虚拟摇杆的功能。

在这里插入图片描述

一般虚拟摇杆的组成都是由轮盘和遥感的点组成,轮盘控制位移,限制在某个区域内,而点则是控制旋转,限制在轮盘内,因此需要用到的是Unity自带的UI事件,因此创建一个名为UIEventListener的类,去实现IPointerDownHandler,IPointerUpHandler,IDragHandler方法,通过事件监听回调来处理。

using UnityEngine;
using UnityEngine.EventSystems;namespace CS
{[AddComponentMenu("UI/UIEventListener")]public class UIEventListener : MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IDragHandler{public Action<PointerEventData> OnDownEvent;public Action<PointerEventData> OnUpEvent;public Action<PointerEventData> OnDargEvent;public static UIEventListener Get(GameObject go){UIEventListener listener = null;if (go != null){listener = go.GetComponent<UIEventListener>();if (listener == null){listener = go.AddComponent<UIEventListener>();}}return listener;}public void OnPointerDown(PointerEventData eventData){OnDownEvent?.Invoke(eventData);}public void OnPointerUp(PointerEventData eventData){OnUpEvent?.Invoke(eventData);}public void OnDrag(PointerEventData eventData){OnDargEvent?.Invoke(eventData);}}

下面贴出完整代码,接下来对虚拟摇杆进行处理,监听这三个事件,其中mTouchMaxDir是虚拟摇杆的点距离轮盘中心的最大距离,也就是你遥感点能拉到多远,而由于在不同分辨率下,这个距离其实并非是固定的,因此就和我上一篇Unity实现经验条动态自适应一样,以实际画布的高比屏幕的高得到当前高的比值,然后乘以固定的最远拉伸距离,就能得到当前分辨率下的自适应拉伸距离。为了限制轮盘的位置,因此需要设置一张矩形的底图,将其aplha设置为0,表示轮盘可移动的范围。

在这里插入图片描述

在我们按下的时候,记录开始按下的位置,已经显示遥感点,将按下的位置赋值给轮盘,而抬起的时候,隐藏摇杆点,重置轮盘的位置,这个都很简单,然后我们在OnDrag拖拽事件中,首先我们得到遥感的方法,通过遥感的最终位置-开始位置 = 方向,由于我们遥感点是需要限定在轮盘内的,因此需要用距离来判断,因此通过方向的magnitude得到当前遥感点的距离,来判断是否超过我们之前设定的最大遥感距离,如果超出了就用 Vector2.ClampMagnitude(dir, mTouchMaxDir) API限制在这个mTouchMaxDir最大距离内,然后我们遥感点的位置就是我们开始位置+限制在最大距离的Dir ,如果没有超出就直接等于我们Drag传出的位置即可,这里的位置需要注意,都是postion,也就是世界坐标的位置,因为我们UIEvent事件中传出的eventData中的Position是世界坐标位置

    public class UI_MainCityPanel : View<UI_MainCityPanel, MainCityScene>{private Image mDirBgImg;private Image mDirPointImg;private Vector2 mStartPos = Vector2.zero;private Vector2 mDefaultPos = Vector2.zero;private float mTouchMaxDir;public override void IAwake(){base.IAwake();InitComponment();OnTouchEvent();}private void InitComponment(){mPowerImg = transform.Index<Image>("F_PowerImg");mDirBgImg= transform.Index<Image>("F_DirBg");}private void OnTouchEvent(){mTouchMaxDir = Screen.height * 1.0f / Consts.ScreenHeight * Consts.TouchPointMaxLen;mDirPointImg.SetActiveState(false);mUIEvtListener = UIEventListener.Get(gameObject);mUIEvtListener.OnDownEvent += (eventData =>{mStartPos = eventData.position;mDirPointImg.SetActiveState(true);mDirBgImg.transform.position = eventData.position;});mUIEvtListener.OnUpEvent += (eventData =>{mDirPointImg.transform.localPosition = mDefaultPos;mDirPointImg.SetActiveState(false);mDirBgImg.transform.localPosition = mDefaultPos;});mUIEvtListener.OnDargEvent += (eventData =>{Vector2 dir = eventData.position - mStartPos;float length = dir.magnitude;if (length > mTouchMaxDir){Vector2 clampDir = Vector2.ClampMagnitude(dir, mTouchMaxDir);mDirPointImg.transform.position = mStartPos + clampDir;}else{mDirPointImg.transform.position = eventData.position;}});}
}

下面看演示效果

在这里插入图片描述

http://www.yayakq.cn/news/39194/

相关文章:

  • 网站维护升级wordpress点击才弹窗插件
  • seo做的最好的网站排行专业的郑州网站推广
  • 网站建设的专业性对搜索引擎营销的影响深做网站公司
  • 电商网站建设网中国网络平台排名前十
  • 龙岩做网站开发哪家做的好03340网站建设与管理
  • 中山网站建设方案报价携程做旅游的网站
  • 定制美瞳网站建设土木工程毕业设计网站
  • 哪里有服务好的网站建设dede手机网站模板修改
  • 用html建设网站网站空间企业个人
  • 江苏专业的网站建设品牌内容包括哪些
  • 厦门本地企业网站建设网页设计论文的研究内容
  • 创建一个网站需要做哪些工作山东公路建设集团网站
  • 网站建设公司天强科技wordpress 首页模块
  • 网站建设业务流程图wordpress 关闭搜索引擎
  • 网站建设意见征求汇报威海企业做网站哪家好
  • 金融产品做网站推广专业制作网站价格
  • 一个人做网站原型美食推广平台有哪些
  • 移动网站 图片优化微信开放平台注册流程
  • 有备案号的网站是公司的吗华池网站建设
  • 网站建设维护项目中国万网提供的服务和收费情况
  • 协会网站建设模板株洲市做公司官方网站
  • 合肥 电子商务 网站推广矿产网站建设价格
  • 外贸网站怎么做seo优化影视网站wordpress
  • 个人网站建设论文绪论seo整站优化方案案例
  • 网站建设课程中的收获wordpress简化注册
  • 酉阳网站建设太和县住房和城乡建设局网站
  • 企业网站建设一般包含哪些内容受欢迎的永州网站建设
  • dw自己做网站需要什么意思谷歌商店app下载
  • 如何开wordpress网站找人做ps的网站
  • 技术难度高的网站开发网站开发难点