如何在Unity中将鼠标输入转换为触摸输入?

时间:2020-07-01 17:02:55

标签: c# unity3d

我有这行代码可用于鼠标输入:当按下并向上移动鼠标时,游戏对象旋转,而向下移动时向后旋转。我想做同样的事情,但要用手指触摸一个AR应用程序。请有人帮我!!!

案例“ BOTAO GIRO(1)”:

                if(botao.transform.rotation.eulerAngles.z < 100)
                {
                    botao.transform.Rotate(Vector3.forward * speed);
                }else { }

                if(botao.transform.rotation.eulerAngles.z > 350)
                {
                    botao.transform.Rotate(Vector3.back * speed);
                }else { }

                if (Input.GetMouseButton(0))
                {

                    if (Input.GetAxis("Mouse Y") > 0)
                    {
                        if (botao.transform.rotation.eulerAngles.z > 100 && botao.transform.rotation.eulerAngles.z < 350)
                        {
                            Debug.Log(botao.transform.eulerAngles.z);
                            botao.transform.Rotate(Vector3.forward * speed);
                           
                        }
                      
                        
                      
                    }
                    else
                    {
                        if (Input.GetAxis("Mouse Y") < 0)
                        {
                            if (botao.transform.rotation.eulerAngles.z > 100 && botao.transform.rotation.eulerAngles.z < 350)
                            {
                                Debug.Log(botao.transform.rotation.eulerAngles.z);
                                botao.transform.Rotate(Vector3.back * speed);
                                
                            }
                            
                           
                        }
                    }
                }
                else
                {
                    if (Input.GetMouseButton(0) == false)
                    {

                        eixo.SetActive(false);


                    }
                }
             

                break;

1 个答案:

答案 0 :(得分:0)

在API中,例如Touch.phase,您可以在其中找到完整的实施示例。

对您来说,它看起来像是

private Vector2 firstTouchPosition;


...

case "BOTAO GIRO (1)":  
    if(botao.transform.rotation.eulerAngles.z < 100)
    {
        botao.transform.Rotate(Vector3.forward * speed);
    }
    if(botao.transform.rotation.eulerAngles.z > 350)
    {
        botao.transform.Rotate(Vector3.back * speed);
    }

    if (Input.touchCount > 0)
    {
        var touch = Input.GetTouch(0);

        switch(touch.phase)
        {
            case TouchPhase.Began:
                firstTouchPosition = touch.position;
                break;

            case TouchPhase.Moved:
                var dif = touch.position - firstTouchPosition;
                if (dif.y > 0)
                {
                    if (botao.transform.rotation.eulerAngles.z > 100 && botao.transform.rotation.eulerAngles.z < 350)
                    {
                        Debug.Log(botao.transform.eulerAngles.z);
                        botao.transform.Rotate(Vector3.forward * speed);
                       
                    }                   
                    else if (did.y < 0)
                    {
                        if (botao.transform.rotation.eulerAngles.z > 100 && botao.transform.rotation.eulerAngles.z < 350)
                        {
                            Debug.Log(botao.transform.rotation.eulerAngles.z);
                            botao.transform.Rotate(Vector3.back * speed);           
                        }
                    }
                }
                break;
          }
      }
      else
      {
          exio.SetActive(false);
      }

在智能手机上输入文字,但我希望这个主意会清楚