zoukankan      html  css  js  c++  java
  • (五)摇杆/按钮/触摸板

    Each Touch前面的几个功能用unity自身的UI事件比较容易实现,但是其最强的地方在于封装了移动端第一人称游戏的操作,以下是几个关键功能:

    (一)Joystick

    右键->选择Easytouch controls->选择Joystick即可添加如下图所示。

    1)joystick name

    此名字与游戏名字相同,但是游戏物体名字无法重新命名,只能在此处修改名字,joystick name后边的几个参数相对来说没用歧义。

    2)position&size

    此部分是用来设定位置和大小,type如果选为dynamic则一开始按钮是隐藏的,会动态在点击位置出现。第二个参数锚点如果不选择用户自定义,则不能在recttransform中设定,只能在joystick中设定。

    3)axes properties

    此部分是设定重点,Turn & move direction action如果选中则表示可以旋转,作用游戏物体为Direct action to参数所指定的游戏物体,也可以点击auto link on tag,通过指定layer来确定作用的游戏物体。Turn & move direction action会影响下边Horizontal axis以及vertical axis子参数。取消勾选,然受设定Horizontal axis以及vertical axis子参数(重点)。

    Horizontal axis(vertical axis):这些参数用来设定相关操作对游戏物的影响,后续的事件(参数moveevent等)绑定功能可实现类似功能(即在绑定的事件中手动编写控制代码)。此处相当于通过参数定义可以快速实现功能。其后边名称可以修改,并通过此名字来获取水平方向的参数(与 Input.GetAxis("Horizontal")功能类似);ETCInput.GetAxisDownRight("Horizontal")则表示获取名称为Horizontal的Horizontal axis值(由于可以有不同的joystick,所以会有不同的Horizontal axis,通过名称来区分是哪个)

                    General setting:主要是react on参数和speed参数,前者为用来确定按下触发(触发一次)还是按下后一直触发(持续触发),后者确定运动的速度。

                    Direction action:表示相关运动控制,Direct action to参数所指定的游戏物体,也可以点击auto link on tag,通过指定layer来确定作用的游戏物体。action则表示运动形式(旋转还是已移动还是跳跃。。),affected axis则表示运动轴,而有的是没有此选项的,比如action参数值为jump。

                    Gravity-inertia-smoothing:进行相关惯性设定,即松开按键后是否立即停止运动还是会惯性一段时间。

                    Unity axis:与unity对应的input类中的轴是否对应(如vertical,horizontal等),axes properties的第一选项Enable unity axis如果不勾选,则此选项则没有作用。

    4)camera

    Enable tracking:是否开启追踪,即是否有运动物体视角(摄像机是否追踪游戏物体)。所以需要设定追踪的摄像机和相应的游戏物体

    5)sprites

    按键的贴图

    6)MoveEvent~PressEvent

    相关事件,跟button操作方法一样,由于事件众多也可以采用ETCInput类来实现,代码见文末。

    (二)D-pad、TouchPad

    右键->选择Easytouch controls->选择D-pad即可添加,其参数与Joystick基本类似,不做赘述。

    TouchPad与Joystick功能也相似,不过是以触摸板的形式表现。

    (三) Button

    右键->选择Easytouch controls->选择Button即可添加。其功能少于上述三类,其相当于unity Button功能的扩展,并能够通过Direction action参数(四种按键均有此参数,功能一样)快速定义点击时与运动相关的运动形式。并通过ETCInput.GetButtonValue( "Button"),获取当前值(测试均为1,不知道有什么特殊意思)

    Button代码事件    
    
    
        if (ETCInput.GetButton("Button")){
                getButtonText.text="YES";
                getButtonTimeText.text = ETCInput.GetButtonValue( "Button").ToString();           
            }
            else{
                getButtonText.text="";
                getButtonTimeText.text = "";
            }
    
            if (ETCInput.GetButtonDown("Button"))
            { 
                getButtonDownText.text = "YES";
                StartCoroutine( ClearText(getButtonDownText));
    
            }
    
            if (ETCInput.GetButtonUp("Button")){
                getButtonUpText.text = "YES";
                StartCoroutine( ClearText(getButtonUpText));
            }
    代码控制事件       
    
    
    
     ETCInput.GetAxis("Horizontal");//获取水平轴返回值(与unity的Input.GetAxis相同);
            ETCInput.GetAxisSpeed("Horizontal");//获取水平轴方向的移动速度;
            ETCInput.GetAxis("Vertical");
            ETCInput.GetAxisSpeed("Vertical");
    
            //按下与松开(只执行一次)
            if (ETCInput.GetAxisDownRight("Horizontal")){
                downRightText.text = "YES";
                StartCoroutine( ClearText(downRightText));
            }
    
            if (ETCInput.GetAxisDownDown("Vertical")){
                downDownText.text = "YES";
                StartCoroutine( ClearText(downDownText));
            }
    
            if (ETCInput.GetAxisDownLeft("Horizontal")){
                downLeftText.text = "YES";
                StartCoroutine( ClearText(downLeftText));
            }
    
            if (ETCInput.GetAxisDownUp("Vertical")){
                downUpText.text = "YES";
                StartCoroutine( ClearText(downUpText));
            }
    
            //持续按下与松开(持续执行)
            if (ETCInput.GetAxisPressedRight("Horizontal")){
                rightText.text ="YES";
            }
            else{
                rightText.text ="";
            }
    
            if (ETCInput.GetAxisPressedDown("Vertical")){
                downText.text ="YES";
            }
            else{
                downText.text ="";
            }
    
            if (ETCInput.GetAxisPressedLeft("Horizontal")){
                leftText.text ="Yes";
            }
            else{
                leftText.text ="";
            }
    
            if (ETCInput.GetAxisPressedUp("Vertical")){
                upText.text ="YES";
            }
            else{
                upText.text ="";
            }



    Event注册时间    
    
    
    
    public void MoveStart(){
    
        }
    
        public void Move(Vector2 move){
    
        }
    
        public void MoveSpeed(Vector2 move){
    
        }
    
        public void MoveEnd(){
    
        }
    
        public void TouchStart(){
    
        }
    
        public void TouchUp(){
    
        }
    
        public void DownRight(){
    
        }
    
        public void DownDown(){
    
        }
    
        public void DownLeft(){
    
        }
    
        public void DownUp(){
    
        }
    
        public void Right(){
    
        }
    
        public void Down(){
    
        }
    
        public void Left(){
    
        }
    
        public void Up(){
    
        }
  • 相关阅读:
    日期格式设置
    ccnet编译后dll被删除
    GridView使用
    项目发布命令
    虚拟内存技术原理和使用方法
    一种可以穿透还原卡和还原软件的代码
    DataList控件也玩分页
    如何在 Windows XP 或 Windows Server 2003 的应用程序开发中实现 URL 验证
    vc 6.0中开发驱动设备程序配置方法
    通过CreateFile来读取磁盘扇区的方法
  • 原文地址:https://www.cnblogs.com/llstart-new0201/p/8963938.html
Copyright © 2011-2022 走看看