/// <summary> /// 是否和小方块有碰撞 /// </summary> /// <param name="origin">方块左下角</param> /// <param name="offset"></param> /// <param name="camera"></param> /// <returns></returns> private bool HitQuad(Vector3 origin, Vector3 dir0, Vector3 dir1, Camera camera) { Vector3 pos1 = origin + dir0; Vector3 pos2 = origin + dir0 + dir1; Vector3 pos3 = origin + dir1; Vector2 mousePos = Input.mousePosition; Vector2 screenOrigin = camera.WorldToScreenPoint(origin); Vector2 screenPos1 = camera.WorldToScreenPoint(pos1); Vector2 screenPos2 = camera.WorldToScreenPoint(pos2); Vector2 screenPos3 = camera.WorldToScreenPoint(pos3); //PhysicsMath.IsPointInsidePolygon //if (mousePos.x > Mathf.Max(screenOrigin.x, screenOffset.x) || // mousePos.x < Mathf.Min(screenOrigin.x, screenOffset.x) || // mousePos.y > Mathf.Max(screenOrigin.y, screenOffset.y) || // mousePos.y < Mathf.Min(screenOrigin.y, screenOffset.y)) // return false; //else // return true; return(Math2d.IsPointInsidePolygon(mousePos, new Vector2[] { screenOrigin, screenPos1, screenPos2, screenPos3 })); }