Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {
            if (Input.GetTouch(0).deltaPosition.sqrMagnitude > minDis)
            {
                Vector2 deltaDir = Input.GetTouch(0).deltaPosition;
                if (Mathf.Abs(deltaDir.x) > Mathf.Abs(deltaDir.y))
                {
                    moveDir = deltaDir.x > 0 ? TouchMoveDir.right : TouchMoveDir.left;
                }
                if (Mathf.Abs(deltaDir.y) > Mathf.Abs(deltaDir.x))
                {
                    moveDir = deltaDir.y > 0 ? TouchMoveDir.up : TouchMoveDir.down;
                }
            }
        }

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            moveDir = TouchMoveDir.idle;
        }

        if (moveDir == TouchMoveDir.right)
        {
            Debug.Log("right");
            target.transform.position += transform.right * 0.2f;
        }
        if (moveDir == TouchMoveDir.left)
        {
            Debug.Log("left");
            target.transform.position -= transform.right * 0.2f;
        }
        if (moveDir == TouchMoveDir.up)
        {
            target.transform.position += transform.up * 0.2f;
            target.transform.position += transform.up * 0.2f;
        }
        if (moveDir == TouchMoveDir.down)
        {
            target.transform.position -= transform.up * 0.2f;
        }
    }
Ejemplo n.º 2
0
    void FixedUpdate()
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {
            if (Input.GetTouch(0).deltaPosition.sqrMagnitude > minDis)
            {
                Vector2 deltaDir = Input.GetTouch(0).deltaPosition;
                if (Mathf.Abs(deltaDir.x) > Mathf.Abs(deltaDir.y))
                {
                    moveDir = deltaDir.x > 0 ? TouchMoveDir.right : TouchMoveDir.left;
                }
                if (Mathf.Abs(deltaDir.y) > Mathf.Abs(deltaDir.x))
                {
                    moveDir = deltaDir.y > 0 ? TouchMoveDir.idle : TouchMoveDir.down;
                }
            }
        }

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            moveDir = TouchMoveDir.left;
        }
        if (moveDir == TouchMoveDir.right)
        {        //右
            moveDir = TouchMoveDir.left;
        }
        if (moveDir == TouchMoveDir.left)
        {        //左
            moveDir = TouchMoveDir.left;
        }
        if (moveDir == TouchMoveDir.idle)
        {        //上
            if (Application.platform != RuntimePlatform.WindowsEditor)
            {    //非编辑器下运行
                if (Input.GetTouch(0).position.x >= 0 && Input.GetTouch(0).position.x <= Screen.width * 0.75f)
                {
                    if (transform.position.y > initPos.y + maxDis)
                    {
                        Vector3 endPos = new Vector3(initPos.x, initPos.y + maxDis, initPos.z);
                        transform.DOMove(endPos, 0.1f);
                    }
                    else if (maxDis != 0)
                    {
                        transform.Translate(new Vector3(0, 1, 0) * speed * Input.GetTouch(0).deltaPosition.sqrMagnitude *Time.deltaTime);                            //滑动的距离等于  手指滑动的距离乘 移动速度
                    }
                }
            }
            moveDir = TouchMoveDir.left;
        }
        if (moveDir == TouchMoveDir.down)                              //下
        {
            if (Application.platform != RuntimePlatform.WindowsEditor) //非编辑器下运行
            {
                if (Input.GetTouch(0).position.x >= 0 && Input.GetTouch(0).position.x <= Screen.width * 0.75f)
                {
                    if (transform.position.y < initPos.y)                      //超出滑动的距离
                    {
                        transform.DOMove(initPos, 0.1f);
                    }
                    else if (maxDis != 0)
                    {
                        transform.Translate(new Vector3(0, 1, 0) * -speed * Input.GetTouch(0).deltaPosition.sqrMagnitude *Time.deltaTime);                            //滑动的距离等于  手指滑动的距离乘 移动速度
                    }
                }
                moveDir = TouchMoveDir.left;
            }
        }
    }
Ejemplo n.º 3
0
    private void Update()
    {
#if (UNITY_IOS || UNITY_ANDROID)
        RaycastHit hit = new RaycastHit();


        for (int i = 0; i < Input.touchCount; ++i)
        {
            if (Input.GetTouch(i).phase.Equals(TouchPhase.Began))
            {
                // Construct a ray from the current touch coordinates
                Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
                if (Physics.Raycast(ray, out hit))
                {
                    if (hit.transform.GetComponent <Touchable>())
                    {
                        if (lastHit.transform && hit.transform != lastHit.transform)
                        {
                            if (lastHit.transform.GetComponent <Touchable>())
                            {
                                lastHit.transform.gameObject.SendMessage("OnTouchExited", SendMessageOptions.DontRequireReceiver);
                            }
                        }
                        hit.transform.gameObject.SendMessage("OnTouchDown");
                        lastHit = hit;
                    }
                }
            }
            if (Input.GetTouch(i).phase.Equals(TouchPhase.Ended))
            {
                // Construct a ray from the current touch coordinates
                Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
                if (Physics.Raycast(ray, out hit))
                {
                    if (hit.transform.GetComponent <Touchable>())
                    {
                        hit.transform.gameObject.SendMessage("OnTouchUp");
                    }
                }
                moveDir = TouchMoveDir.idle;
            }
            if (Input.GetTouch(i).phase.Equals(TouchPhase.Moved))
            {
                if (Input.GetTouch(0).deltaPosition.sqrMagnitude > minDis)
                {
                    Vector2 deltaDir = Input.GetTouch(0).deltaPosition;
                    if (Mathf.Abs(deltaDir.x) > Mathf.Abs(deltaDir.y))
                    {
                        moveDir = deltaDir.x > 0 ? TouchMoveDir.right : TouchMoveDir.left;
                    }
                    if (Mathf.Abs(deltaDir.y) > Mathf.Abs(deltaDir.x))
                    {
                        moveDir = deltaDir.y > 0 ? TouchMoveDir.up : TouchMoveDir.down;
                    }
                }
            }
        }

        switch (moveDir)
        {
        case TouchMoveDir.idle:
            break;

        case TouchMoveDir.left:
            break;

        case TouchMoveDir.right:
            if (MoveRight != null)
            {
                MoveRight.Invoke(this, null);
            }
            break;

        case TouchMoveDir.up:
            break;

        case TouchMoveDir.down:
            break;

        default:
            break;
        }
#endif
    }