Unity3D实现虚拟按钮控制人物移动效果-创新互联

本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下

创新互联建站是一家专注于成都做网站、网站建设与策划设计,龙马潭网站建设哪家好?创新互联建站做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:龙马潭等地区。龙马潭做网站价格咨询:028-86922220

创建Image的UI组件,在Image下新建一个Button按钮。在Image 和Button上拖进Sprite图片

Unity3D实现虚拟按钮控制人物移动效果

在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://ybzwz.com/article/dhgjse.html