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