zoukankan      html  css  js  c++  java
  • ugui自制摇杆。

    珍爱生命,远离插件。

    以上8个字,好好理解。

    反正我是这么觉得。

    我说的是unity,不是魔兽世界。

    总有一天,我会一句一句写出属于自己的东西。

    可以开始主题了。

           

    如图所示,建立一个画布,添加两个image即可(注意父子关系,父亲为摇杆外面的那个圆圈),然后调整位置到左下角,调节锚点,选左下角那个。

    接下来编辑脚本

    using UnityEngine;
    using System.Collections;
    using UnityEngine.EventSystems;

    public class Joystick : MonoBehaviour, IBeginDragHandler, IDragHandler ,IEndDragHandler{

        public Vector3 normalCenter;
        public static float joystickH;
        public static float joystickV;

        private bool isDrag;
        private Vector3 startPos;
        private Vector3 dragPos;


        void Awake()
        {
            isDrag = false;
            startPos = transform.localPosition;
        }

        void Update()
        {
            if(isDrag)
            {
                float distance = Vector3.Distance(dragPos, normalCenter);
                Vector3 dirNormal = dragPos - normalCenter;
                if(distance > 45)
                {
                    transform.localPosition = dirNormal.normalized * 50;
                }
                else
                {
                    transform.localPosition = dirNormal;
                }
                joystickH = dirNormal.x / 1000;
                joystickV = dirNormal.y / 1000;
            }
            else
            {
                transform.localPosition = startPos;
                joystickH = 0;
                joystickV = 0;
            }
        }

        public void OnBeginDrag(PointerEventData eventData)
        {
            isDrag = true;
        }

        public void OnDrag(PointerEventData eventData)
        {
            dragPos = eventData.position;
        }

        public void OnEndDrag(PointerEventData eventData)
        {
            isDrag = false;
        }
    }

    OK,回到unity运行程序,是不是可以动了呢。

    让别的物体动的话,只需在控制移动的脚本里调用 joystickH  joystickV 即可,对应水平和垂直方向。

  • 相关阅读:
    转ico的网站
    npm install时 报错Maximum call stack size exceeded
    vue的props和$emit / 父子组件通信。别看其他人的了,我这个例子清晰,肯定可用的。
    Cannot reinitialise DataTable 问题
    dataTable 加了竖向滚动条导致列头样式错位的问题 / 亲测可用,不好用你打我,用好了记得点推荐
    MongoDB基本语句
    学生信息系统(json模块解决数据持久化)
    0428(字典,列表,循环)
    用python复制图片、视频
    Python库的安装
  • 原文地址:https://www.cnblogs.com/duyushuang/p/4457691.html
Copyright © 2011-2022 走看看