Unity3D实现虚拟按钮控制人物移动效果-创新互联
本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下
创新互联建站是一家专注于成都做网站、网站建设与策划设计,龙马潭网站建设哪家好?创新互联建站做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:龙马潭等地区。龙马潭做网站价格咨询:028-86922220创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片
在Button按钮上挂载该脚本
using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class MyJoystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { public Canvas canvas; public static float h; //h和v的值传回给player脚本,使得物体移动 public static float v; private bool isPress = false; //Button按钮是否按下 private Vector2 touchPos = Vector2.zero; //按下的位置 void Update() { if (isPress) { RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, Input.mousePosition, null, out touchPos); //根据Canvas和Image的Rectransform位置相减得出 touchPos += new Vector2(427, 299); float distance = Vector2.Distance(Vector2.zero, touchPos); if (distance > 52) { //限制Button不能超出Image位置(两者位置相减得出52) touchPos = touchPos.normalized*52; transform.localPosition = touchPos; } else { transform.localPosition = touchPos; } h = touchPos.x / 52; v = touchPos.y / 52; } } //鼠标按下时触发 public void OnPointerDown(PointerEventData eventData) { isPress = true; } //鼠标按键弹起时触发 public void OnPointerUp(PointerEventData eventData) { isPress = false; transform.localPosition = Vector3.zero; } }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:Unity3D实现虚拟按钮控制人物移动效果-创新互联
分享网址:http://azwzsj.com/article/dhgjse.html