Unity开发备忘录000016:手游中虚拟摇杆的实现

    xiaoxiao2025-01-09  8

    一. 游戏摇杆是游戏机上常用的游戏交互工具,它可以实现360度旋转控制游戏角色

    二. 手机上不可能有游戏摇杆设备,但现在的手游中很多都是用了虚拟摇杆技术实现对角色的灵活快速控制

    三. 在Unity下实现虚拟摇杆功能

    1. 利用UGUI设计虚拟摇杆

    在GameObject下拉菜单下,选择UI中的Image,创建一个Image控件,命名为Background。

    用同样的方法,在Background下再创建一个Image控件,命名为Rocker,使Rocker成为Background的子对象。

    将准备好的“背景”图片拖放到Background控件的Source Image中;同样将“摇杆”图片拖放到Rocker控件的Source Image中。

    2. 为Background控件控件添加Scroll Rect组件,并将Rocker控件拖放到Scroll Rect组件中的Content上

    3. 编写如下代码实现对摇杆的操作

    void Start()    

    {        

            rect = gameObject.GetComponent<RectTransform>();     //获取Rect组件    

            startPos = rect.position;     //将摇杆的初始位置赋给startPos

    }    

    void Update()    

    {        

            endPos = rect.position;      //获得摇杆的新位置   

            Vector2 vector = endPos - startPos;       //计算摇杆的向量

            h = vector.x;      //将摇杆的x值赋给h 

            v = vector.y;      //将摇杆的y值赋给v

    }

    4. 编写如下代码用于摇杆控制角色移动

    if (Mathf.Abs(Rocker.h) > 0.01f || Mathf.Abs(Rocker.v) > 0.01f)     //判断摇杆传过来的值的绝对值是否大于0.01,如果大于说明摇杆被移动

     {          

            h = Rocker.h;     //将摇杆的h值赋给游戏对象的h值     

            v = Rocker.v;      //将摇杆的v值赋给游戏对象的v值    

            Vector3 targetDir = new Vector3(h, 0, v);      //将h值作为游戏对象的被移动的x值, 将v值作为游戏对象的被移动的z值

            transform.LookAt(targetDir + transform.position);     //计算游戏对象的朝向和位置                 

            transform.Translate(Vector3.forward * speed);      //使游戏对象在摇杆的操作性运动

    }

    5. 发布apk包,并在手机上安装运行

     

    老孙头课堂:https://edu.csdn.net/lecturer/3617

    工程源码:https://download.csdn.net/download/sunbowen63/11205753

     

    最新回复(0)