Unity Pico手柄触摸圆盘滑动功能

Pico 开发SDK 中实现了对手柄触摸圆盘中上滑,下滑,左滑,右滑的判定,只是将这些方法写进了拓展的API中,并且默认是不被启用的。所以我们通过查看源码便可轻松调用里面的方法属性。
查看SDK中Pvr_ControllerManager.cs中第304行开始。

我们发现在拓展的API中实现了长按和滑动的功能,通过ExtendedAPI控制是否启用。我们可以将ExtendedAPI设置为True,调用里面的布尔属性:

  TouchPadKey.slideright   //向右滑动
    TouchPadKey.slideleft //向左滑动
    TouchPadKey.slidedown //向下滑动
    TouchPadKey.slideup //向上滑动
 #region extended api
            //打开扩展API后,提供长按和滑动功能
            if (ExtendedAPI)
            {
                //slip
                if (TouchPadPosition.x > 0 || TouchPadPosition.y > 0)
                {
                    if (!touchClock)
                    {
                        touchXBegin = TouchPadPosition.x;
                        touchYBegin = TouchPadPosition.y;
                        touchClock = true;
                    }
                    touchXEnd = TouchPadPosition.x;
                    touchYEnd = TouchPadPosition.y;
                }
                else
                {
                    if (touchXEnd > touchXBegin)
                    {
                        if (touchYEnd > touchYBegin)
                        {
                            if (touchXEnd - touchXBegin > slipNum && ((touchXEnd - touchXBegin) > (touchYEnd - touchYBegin)))
                            {
                                //slide up
                                TouchPadKey.slideup = true;
                            }
                            if (touchYEnd - touchYBegin > slipNum && ((touchYEnd - touchYBegin) > (touchXEnd - touchXBegin)))
                            {
                                //slide right
                                TouchPadKey.slideright = true;
                            }
                        }
                        else if (touchYEnd < touchYBegin)
                        {
                            if (touchXEnd - touchXBegin > slipNum && ((touchXEnd - touchXBegin) > (touchYBegin - touchYEnd)))
                            {
                                //slide up
                                TouchPadKey.slideup = true;
                            }
                            if (touchYBegin - touchYEnd > slipNum && ((touchYBegin - touchYEnd) > (touchXEnd - touchXBegin)))
                            {
                                //slide left
                                TouchPadKey.slideleft = true;
                            }
                        }
                    }
                    else if (touchXEnd < touchXBegin)
                    {
                        if (touchYEnd > touchYBegin)
                        {
                            if (touchXBegin - touchXEnd > slipNum && ((touchXBegin - touchXEnd) > (touchYEnd - touchYBegin)))
                            {
                                //slide down
                                TouchPadKey.slidedown = true;
                            }
                            if (touchYEnd - touchYBegin > slipNum && ((touchYEnd - touchYBegin) > (touchXBegin - touchXEnd)))
                            {
                                //slide right
                                TouchPadKey.slideright = true;
                            }
                        }
                        else if (touchYEnd < touchYBegin)
                        {
                            if (touchXBegin - touchXEnd > slipNum && ((touchXBegin - touchXEnd) > (touchYBegin - touchYEnd)))
                            {
                                //slide down 
                                TouchPadKey.slidedown = true;
                            }
                            if (touchYBegin - touchYEnd > slipNum && ((touchYBegin - touchYEnd) > (touchXBegin - touchXEnd)))
                            {
                                //slide left
                                TouchPadKey.slideleft = true;
                            }
                        }
                    }
                    else
                    {
                        TouchPadKey.slideright = false;
                        TouchPadKey.slideleft = false;
                        TouchPadKey.slidedown = false;
                        TouchPadKey.slideup = false;
                    }
                    touchXBegin = 0;
                    touchXEnd = 0;
                    touchYBegin = 0;
                    touchYEnd = 0;
                    touchClock = false;
                }

                //longpress
                if (HomeKey.state)
                {
                    HomeKey.timecount += Time.deltaTime;
                    if (HomeKey.timecount >= longPressTime && !HomeKey.longPressedClock)
                    {
                        HomeKey.longPressed = true;
                        HomeKey.longPressedClock = true;
                        longPressclock = true;
                    }
                    else
                    {
                        HomeKey.longPressed = false;
                    }
                }
                else
                {
                    HomeKey.longPressedClock = false;
                    HomeKey.timecount = 0;
                    HomeKey.longPressed = false;
                }
                if (APPKey.state)
                {
                    APPKey.timecount += Time.deltaTime;
                    if (APPKey.timecount >= longPressTime && !APPKey.longPressedClock)
                    {
                        APPKey.longPressed = true;
                        APPKey.longPressedClock = true;
                        longPressclock = true;
                    }
                    else
                    {
                        APPKey.longPressed = false;
                    }
                }
                else
                {
                    APPKey.longPressedClock = false;
                    APPKey.timecount = 0;
                    APPKey.longPressed = false;
                }
                if (TouchPadKey.state)
                {
                    TouchPadKey.timecount += Time.deltaTime;
                    if (TouchPadKey.timecount >= longPressTime && !TouchPadKey.longPressedClock)
                    {
                        TouchPadKey.longPressed = true;
                        TouchPadKey.longPressedClock = true;
                        longPressclock = true;
                    }
                    else
                    {
                        TouchPadKey.longPressed = false;
                    }
                }
                else
                {
                    TouchPadKey.longPressedClock = false;
                    TouchPadKey.timecount = 0;
                    TouchPadKey.longPressed = false;
                }
                if (VolumeUpKey.state)
                {
                    VolumeUpKey.timecount += Time.deltaTime;
                    if (VolumeUpKey.timecount >= longPressTime && !VolumeUpKey.longPressedClock)
                    {
                        VolumeUpKey.longPressed = true;
                        VolumeUpKey.longPressedClock = true;
                        longPressclock = true;
                    }
                    else
                    {
                        VolumeUpKey.longPressed = false;
                    }
                }
                else
                {
                    VolumeUpKey.longPressedClock = false;
                    VolumeUpKey.timecount = 0;
                    VolumeUpKey.longPressed = false;
                }
                if (VolumeDownKey.state)
                {
                    VolumeDownKey.timecount += Time.deltaTime;
                    if (VolumeDownKey.timecount >= longPressTime && !VolumeDownKey.longPressedClock)
                    {
                        VolumeDownKey.longPressed = true;
                        VolumeDownKey.longPressedClock = true;
                        longPressclock = true;
                    }
                    else
                    {
                        VolumeDownKey.longPressed = false;
                    }
                }
                else
                {
                    VolumeDownKey.longPressedClock = false;
                    VolumeDownKey.timecount = 0;
                    VolumeDownKey.longPressed = false;
                }

            }
            #endregion

方法使用示例

 void Update()
    {
        Debug.Log("x:"+TouchPadPosition.x);
        Debug.Log("y:"+TouchPadPosition.y);
        ShowText_x.text = "x:" + TouchPadPosition.x.ToString();
        ShowText_y.text = "y:" + TouchPadPosition.y.ToString();     
        
        
         
        if ( TouchPadKey.slideup )
        {           
            Debug.Log("向上滑");        
        }    
        if ( TouchPadKey.slidedown )
        {          
            Debug.Log("向下滑");         
        }
        if ( TouchPadKey.slideleft )
        {           
            Debug.Log("向左滑");        
        }
        if ( TouchPadKey.slideright )
        {         
            Debug.Log("向右滑");   
        }
        if ( TouchPadPosition.x != 0 || TouchPadPosition.y != 0 )
        {
           //to do something 
        }
    }

更多的功能可以摸索实现。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值