码迷,mamicode.com
首页 > 其他好文 > 详细

ugui自制摇杆。

时间:2015-04-26 15:05:09      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

珍爱生命,远离插件。

以上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 即可,对应水平和垂直方向。

 

ugui自制摇杆。

标签:

原文地址:http://www.cnblogs.com/duyushuang/p/4457691.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!