C# Can';t解决Unity手机游戏中的hitbox问题

C# Can';t解决Unity手机游戏中的hitbox问题,c#,unity3d,mobile,C#,Unity3d,Mobile,我正在开发一个游戏,在游戏中,物体从屏幕顶部落下,你尝试在它们到达屏幕底部之前点击它们。当我在编辑器中玩游戏时(触摸控制切换为鼠标控制),代码工作正常,但当我在手机上运行游戏时除外,如果你在对象移动的方向上轻轻点击对象的前面,游戏似乎只成功点击,如果您朝对象的后端或中心轻击,则不会记录命中。我已经建立并运行了10次以上的游戏,每次都试图解决这个问题,但似乎没有任何帮助。我目前的理论是,我的触摸控制代码有太多的内容和/或冗余,当它检查一个对象是否在触摸位置时,该对象已移动到另一个位置。有没有想过为

我正在开发一个游戏,在游戏中,物体从屏幕顶部落下,你尝试在它们到达屏幕底部之前点击它们。当我在编辑器中玩游戏时(触摸控制切换为鼠标控制),代码工作正常,但当我在手机上运行游戏时除外,如果你在对象移动的方向上轻轻点击对象的前面,游戏似乎只成功点击,如果您朝对象的后端或中心轻击,则不会记录命中。我已经建立并运行了10次以上的游戏,每次都试图解决这个问题,但似乎没有任何帮助。我目前的理论是,我的触摸控制代码有太多的内容和/或冗余,当它检查一个对象是否在触摸位置时,该对象已移动到另一个位置。有没有想过为什么点击框关闭了,有没有更好的方法用触摸屏进行点击检测

   void FixedUpdate()
     {
         if (IsTouch())
         {
             CheckTouch(GetTouchPosition());
         }
     }


    // Returns true if the screen is touched
         public static bool IsTouch()
         {
             if (Input.touchCount > 0)
             {
                 if (Input.GetTouch(0).phase == TouchPhase.Began)
                 {
                     return true;
                 }
             }
             return false;
         }


     // Gets the position the touch
         private Vector2 GetTouchPosition()
         {
             Vector2 touchPos = new Vector2(0f, 0f);
             Touch touch = Input.GetTouch(0);

             if (Input.GetTouch(0).phase == TouchPhase.Began)
             {
                 touchPos = touch.position;
             }

             return touchPos;
         }

     // Checks the position of the touch and destroys the ball if the 
        ball is touched
         private void CheckTouch(Vector2 touchPos)
         {
             RaycastHit2D hit = 
             Physics2D.Raycast(Camera.main.ScreenToWorldPoint(
             (Input.GetTouch(0).position)), Vector2.zero);

             if (hit.collider != null)
              {
                    destroy(hit.collider.gameObject);
              }
     }

相机是正交的还是透视的?我记得我们用Update来获取输入,而不是FixedUpdate。希望这能解决问题。