Пример #1
0
    void Update()
    {
        if (!playerCtrl.activeSts)
        {
            return;
        }

        float vpad_vertical   = 0.0f;
        float vpad_horizontal = 0.0f;

        zFOXPAD_BUTTON vpad_btnA = zFOXPAD_BUTTON.NON;
        zFOXPAD_BUTTON vpad_btnB = zFOXPAD_BUTTON.NON;

        if (vPad != null)
        {
            vpad_vertical   = vPad.vertical;
            vpad_horizontal = vPad.horizontal;
            vpad_btnA       = vPad.buttonA;
            vpad_btnB       = vPad.buttonB;
        }

        float joyMv = Input.GetAxis("Horizontal");

        float vpadMv = vpad_horizontal;

        vpadMv = Mathf.Pow(Mathf.Abs(vpadMv), 1.5f) * Mathf.Sign(vpadMv);
        playerCtrl.ActionMove(joyMv + vpadMv);

        if (Input.GetButtonDown("Jump") || vpad_btnA == zFOXPAD_BUTTON.DOWN)
        {
            playerCtrl.ActionJump();
            return;
        }

        if (Input.GetButtonDown("Fire1") || Input.GetButtonDown("Fire2") || Input.GetButtonDown("Fire3") || vpad_btnB == zFOXPAD_BUTTON.DOWN)
        {
            if (Input.GetAxisRaw("Vertical") + vpad_vertical < 0.5f)
            {
                playerCtrl.ActionAttack();
            }
            else
            {
                playerCtrl.ActionAttackJump();
            }
        }

        if (Input.GetAxisRaw("Vertical") > 0.7f)
        {
            if (actionEtcRun)
            {
                playerCtrl.ActionEtc();
                actionEtcRun = false;
            }
        }
        else
        {
            actionEtcRun = true;
        }
    }
Пример #2
0
 void CheckButtonUp(RaycastHit hit, int i)
 {
     if (hit.collider.gameObject == sprButtonA.gameObject)
     {
         buttonA          = zFOXPAD_BUTTON.UP;
         buttonAindex     = i;
         sprButtonA.color = new Color(1.0f, 1.0f, 1.0f);
     }
     else if (hit.collider.gameObject == sprButtonB.gameObject)
     {
         buttonB          = zFOXPAD_BUTTON.UP;
         buttonBindex     = i;
         sprButtonB.color = new Color(1.0f, 0.0f, 0.0f);
     }
 }
Пример #3
0
 void CheckButtonMove(RaycastHit hit, int i)
 {
     if (hit.collider.gameObject == sprButtonA.gameObject)
     {
         buttonA      = zFOXPAD_BUTTON.HOLD;
         buttonAindex = i;
         buttonAHit   = true;
     }
     else if (hit.collider.gameObject == sprButtonB.gameObject)
     {
         buttonB      = zFOXPAD_BUTTON.HOLD;
         buttonBindex = i;
         buttonBHit   = true;
     }
 }
Пример #4
0
    void CheckButtonNon()
    {
        if (!buttonAHit)
        {
            buttonA          = zFOXPAD_BUTTON.NON;
            buttonAindex     = -1;
            sprButtonA.color = new Color(0.0f, 0.0f, 0.0f);
        }

        if (!buttonBHit)
        {
            buttonB          = zFOXPAD_BUTTON.NON;
            buttonBindex     = -1;
            sprButtonB.color = new Color(0.0f, 0.0f, 0.0f);
        }
    }
Пример #5
0
 void CheckButtonDown(RaycastHit hit, int i)
 {
     if (hit.collider.gameObject == sprButtonA.gameObject)
     {
         buttonA          = zFOXPAD_BUTTON.DOWN;
         buttonAindex     = i;
         buttonAHit       = true;
         sprButtonA.color = new Color(1.0f, 0.0f, 0.0f);
     }
     else if (hit.collider.gameObject == sprButtonB.gameObject)
     {
         buttonB          = zFOXPAD_BUTTON.DOWN;
         buttonBindex     = i;
         buttonBHit       = true;
         sprButtonB.color = new Color(1.0f, 0.0f, 0.0f);
     }
 }
Пример #6
0
    void Update()
    {
        if (autoLayoutUpdate)
        {
            RunAutoLayout();
        }

        if (buttonA == zFOXPAD_BUTTON.UP)
        {
            buttonA      = zFOXPAD_BUTTON.NON;
            buttonAindex = -1;
        }

        if (buttonB == zFOXPAD_BUTTON.UP)
        {
            buttonB      = zFOXPAD_BUTTON.NON;
            buttonBindex = -1;
        }

        buttonAHit = false;
        buttonBHit = false;

        if (Input.touchCount > 0)
        {
            bool objectTouched = false;

            for (int i = 0; i < Input.touchCount; i++)
            {
                Ray        ray = uicam.ScreenPointToRay(Input.GetTouch(i).position);
                RaycastHit hit;

                if (Physics.Raycast(ray, out hit, Mathf.Infinity))
                {
                    TouchPhase tp = Input.GetTouch(i).phase;

                    if (tp == TouchPhase.Began)
                    {
                        CheckButtonDown(hit, i);
                        objectTouched = true;
                    }
                    else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary)
                    {
                        CheckButtonMove(hit, i);
                        objectTouched = true;
                    }
                    else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled)
                    {
                        CheckButtonUp(hit, i);
                        objectTouched = true;
                    }
                }
            }

            if (!objectTouched)
            {
                CheckButtonNon();
            }
        }
        else
        {
            Ray        ray = uicam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                if (Input.GetMouseButtonDown(0))
                {
                    CheckButtonDown(hit, 0);
                }
                else if (Input.GetMouseButton(0))
                {
                    CheckButtonMove(hit, 0);
                }
                else if (Input.GetMouseButtonUp(0))
                {
                    CheckButtonUp(hit, 0);
                }
                else
                {
                    CheckButtonNon();
                }
            }
            else
            {
                CheckButtonNon();
            }
        }

        //slide 처리

        movEnable = false;

        if (Input.touchCount > 0)
        {
            for (int i = 0; i < Input.touchCount; i++)
            {
                if (i != buttonAindex && i != buttonBindex)
                {
                    TouchPhase tp = Input.GetTouch(i).phase;

                    if (tp == TouchPhase.Began)
                    {
                        if (CheckSlidePadDown(Input.GetTouch(i).position))
                        {
                            break;
                        }
                    }
                    else if (tp == TouchPhase.Moved || tp == TouchPhase.Stationary)
                    {
                        if (CheckSlidePadMove(Input.GetTouch(i).position))
                        {
                            break;
                        }
                    }
                    else if (tp == TouchPhase.Ended || tp == TouchPhase.Canceled)
                    {
                        CheckSlidePadUp();
                    }
                }
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                if (Input.mousePosition.x / Screen.width < 0.5f)
                {
                    CheckSlidePadDown((Vector2)Input.mousePosition);
                }
            }
            else if (Input.GetMouseButton(0))
            {
                CheckSlidePadMove((Vector2)Input.mousePosition);
            }
            else if (Input.GetMouseButtonUp(0))
            {
                CheckSlidePadUp();
            }
        }

        // 이것도 왜 하는지 모르겠다.
        if (movEnable == false)
        {
            movPadEnable = false;
            mov          = Vector2.zero;
        }

        // 이것도 왜 하는지 모르겠다.
        switch (padValMode)
        {
        case zFOXPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WH:
            horizontal = mov.x * padSensitive / Screen.width;
            vertical   = mov.y * padSensitive / Screen.height;
            break;

        case zFOXPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_WW:
            horizontal = mov.x * padSensitive / Screen.width;
            vertical   = mov.y * padSensitive / Screen.width;
            break;

        case zFOXPAD_SLIDEPADVALUEMODE.PAD_XY_SCREEN_HH:
            horizontal = mov.x * padSensitive / Screen.height;
            vertical   = mov.y * padSensitive / Screen.height;
            break;
        }

        // Mathf.clamp 함수를 쓰는 게 더 좋을 듯
        if (horizontal < -1.0f)
        {
            horizontal = -1.0f;
        }
        if (horizontal > 1.0f)
        {
            horizontal = 1.0f;
        }
        if (vertical < -1.0f)
        {
            vertical = -1.0f;
        }
        if (vertical > 1.0f)
        {
            vertical = 1.0f;
        }

        if (Mathf.Abs(horizontal) < horizontalStartVal)
        {
            horizontal = 0.0f;
        }

        if (Mathf.Abs(vertical) < verticalStartVal)
        {
            vertical = 0.0f;
        }

        Vector3 pos = new Vector3(horizontal / (padSensitive), vertical / (padSensitive), 0.0f);

        sprSlidePad.transform.localPosition = pos;
    }