[Unity] 【Ugui摇杆】20行代码,有注释,以及如何使用。免蛮牛B
本帖最后由 StarrySky 于 2016-12-30 00:07 编辑

注: 该摇杆使用unity3d自带UI:Scroll View,制作的摇杆。感谢雨松MOMO的文章。


1、Resources文件夹下就是预制件。   自己需要用的时候, 拖拽到 Canvas 里面。
2、调整好S_V_Joy 的矩形位置与大小, S_V_Joy 的矩形大小就是摇杆的触摸范围, 然后再自己需要摇杆值的地方获取摇杆。
3、两个场景Demo 。 一个是关于如何用摇杆控制2D物体移动,  一个是关于如何用摇杆控制3D物体移动。
4、核心原理就是, 摇杆摇杆的坐标位置 来控制 自己想要控制的物体坐标位移。
5、On_Move(RectTransform rect_)   该方法是手动给YaoGan_所挂的物体的<ScrollRect>组件添加的当拖拽的时候要执行的方法。

摇杆怎么制作使用,unity3D虚拟摇杆怎么制作使用,unity3D安卓手机摇杆怎么制作使用 ,unity3D摇杆怎么控制物体。


免蛮牛B下载百度云项目包:


游客,如果您要查看本帖隐藏内容请回复



————————————————————————————
摇杆:
[mw_shl_code=csharp,true]using UnityEngine;
using System.Collections;

public class YaoGan_ : MonoBehaviour {
    public RectTransform rectT_Viewport;//用来计算摇杆的半径
    public RectTransform rectT_Joy;//将获取坐标作为摇杆键值
    public int r_;
    void Start()
    {
        r_ = (int)rectT_Viewport.sizeDelta.x / 2;
    }
    public void On_Move(RectTransform rect_)
    {
        if (rect_.anchoredPosition.magnitude > r_)
        {//将摇杆限制在 半径 r_ 以内
            rect_.anchoredPosition = rect_.anchoredPosition.normalized * r_;
        }
    }
}
[/mw_shl_code]

————————————————————————————
使用摇杆控制2D物体:

[mw_shl_code=csharp,true]using UnityEngine;
using System.Collections;

/// <summary>这个脚本写的是如何用 摇杆来控制2D
/// </summary>
public class ShiYong_YaoGan : MonoBehaviour {

    [SerializeField]private RectTransform rectPlayer;//拖拽赋值
    [SerializeField]private YaoGan_ yaoGan_C;//拖拽赋值

        // Update is called once per frame
        void Update () {
        rectPlayer.anchoredPosition += (yaoGan_C.rectT_Joy.anchoredPosition /10);//2D坐标 += 摇杆的坐标变化值/10
        }
}
[/mw_shl_code]

————————————————————————————
Unity3D使用摇杆控制3D物体:[mw_shl_code=csharp,true]using UnityEngine;
using System.Collections;

public class ShiYong3d : MonoBehaviour {
    [SerializeField]
    private YaoGan_ yaoGan_C;
        // Use this for initialization
        void Start () {
        yaoGan_C = GameObject.Find("S_V_Joy").GetComponent<YaoGan_>();//给摇杆UI赋值
        }
        
        // Update is called once per frame
        void Update () {
        transform.Translate((yaoGan_C.rectT_Joy.anchoredPosition.x/10) *Time.deltaTime,0, (yaoGan_C.rectT_Joy.anchoredPosition.y/10) * Time.deltaTime);//摇杆控制3D物体的移动
        }
}
[/mw_shl_code]



  • 沙发 cly123s
  • 2016-12-30 16:02:45
不错 学习一下
不错,收藏 学习一下
  • 地板 825
  • 2016-12-30 17:17:50
【Ugui摇杆】20行代码
0.0@@@@@@@@@@@
  • 6# fjzjk
  • 2016-12-30 18:23:54
可以的,很厉害啊
Ugui摇杆】20行代码,有注释,以及如何使用。免蛮牛
  • 8# yhr28
  • 2016-12-30 18:48:10
感谢分享感谢分享
不错的东西,支持一下
看看,感觉不错的东西。
  • 11# hyy339
  • 2016-12-30 23:39:17
感谢楼主分享。
  • 12# ECHL
  • 2016-12-31 10:28:37

感谢分享{:104:}
  • 13# haihua
  • 2016-12-31 17:58:22
1123242432
多谢版主分享,很好的资源。
gfgdfgdfggdfg
1234.. 53下一页