unity实现手游虚拟摇杆
本文实例为大家分享了unity实现手游虚拟摇杆的具体代码,供大家参考,具体内容如下
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; usingUnityEngine.UI; //////绑定到摇杆上的摇杆类,参考半径50 /// publicclassRocker:MonoBehaviour{ Vector2m_offet;//偏移向量 Vector2m_originalPos;//摇杆原始屏幕坐标 Touch[]touches;//屏幕上触控点数组 inttouch_Id=-1;//触控点数组下标 boolisMove=false;//是否移动 floatm_ScreenScale; //////给外部调用的偏移向量,告知摇杆参数 /// publicVector3Offet { get { returnm_offet; } } //Usethisforinitialization voidStart(){ m_originalPos=transform.position;//摇杆中心的屏幕坐标位置 m_ScreenScale=Screen.width/800f; } //Updateiscalledonceperframe voidUpdate(){ //得到屏幕触控数组 touches=Input.touches; if(touches.Length>0)//如果触点开启 { //得到离摇杆中心最近的触点下标touch_Id; if(touches.Length==1)//只有一个触点时 { touch_Id=0; } elseif(touches.Length>1)//触点大于1个时 { touch_Id=0;//先假设下标为0 for(inti=1;i///触点在操作盘内时 ///摇杆控制方法 /// voidSetOffetIn() { //距离过小视为不偏移摇杆位置不变 if(Vector2.SqrMagnitude(touches[touch_Id].position-m_originalPos)<5*m_ScreenScale) { GetComponent ().rectTransform.position=m_originalPos;//摇杆定位在原始位置 m_offet=Vector3.zero; } else { //摇杆位置追踪 GetComponent ().rectTransform.position=touches[touch_Id].position; m_offet=touches[touch_Id].position-m_originalPos;//赋值偏移值 m_offet=m_offet.normalized;//归一化 } } /// ///触点在操作盘外时 ///摇杆控制方法 /// voidSetOffetOut() { Vector2tempDir;//临时偏移向量 tempDir=touches[touch_Id].position-m_originalPos; //更新摇杆位置:距离原始位置127各单位 GetComponent().rectTransform.position=m_originalPos+(tempDir.normalized)*25*m_ScreenScale; //偏移量 m_offet=tempDir.normalized;//归一化 } privatevoidOnGUI() { GUIStylestyle=newGUIStyle();//实例化一个新的GUIStyle,名称为style,后期使用 style.fontSize=50;//字体的大小设置数值越大,字越大,默认颜色为黑色 style.normal.textColor=newColor(1,1,1);//设置文本的颜色为新的颜色(0,0,0)修改值-代表不同的颜色,值为整数我个人觉得有点像RGB的感觉 GUI.Label(newRect(20,30,300,60),"原始位置:"+m_originalPos.ToString(),style); GUI.Label(newRect(20,100,300,60),"摇杆位置:"+GetComponent ().rectTransform.position.ToString(),style); GUI.Label(newRect(20,170,300,60),"触点位置:"+touches[touch_Id].position.ToString(),style); GUI.Label(newRect(20,240,300,60),"屏幕分辨率:"+Screen.currentResolution,style); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。