Ejemplo n.º 1
0
            /// <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 }));
            }