/// <summary> /// 设置位置。这个函数的位置是从世界坐标转换过来的屏幕坐标,Z值是有效值 /// </summary> /// <param name="WorldPos">屏幕坐标</param> public virtual void SetPositionFromWorldSpace(Vector3 ScreenPos) { //是否在视野中 m_isOnCameraView = GfxUtil.IsOnView(ScreenPos, true); m_PixPos = ScreenPos; if (m_isOnCameraView) { Vector2 pos = GfxUtil.ScreenPointToStagePoint(ScreenPos); if (((Mathf.Abs(m_PixPos.x - pos.x) > 0.01f || Mathf.Abs(m_PixPos.y - pos.y) > 0.01f)) && ((Mathf.Abs((float)m_DisplayInfo.X - pos.x) > 1.0f || Mathf.Abs((float)m_DisplayInfo.Y - pos.y) > 1.0f))) { m_DisplayInfo.X = pos.x; m_DisplayInfo.Y = pos.y; bNeedToUpdateDisplayInfo = true; } } OnPositionChange(); }
/// <summary> /// 设置位置,这个是直接设置位置,不是从世界坐标转换过来的。(Unity屏幕坐标) /// </summary> /// <param name="pixelPos">Unity屏幕坐标</param> public virtual void SetPositionDirectly_UnityPoint(Vector2 pixelPos) { //是否在视野中 m_isOnCameraView = GfxUtil.IsOnView(pixelPos, false); m_PixPos = pixelPos; if (m_isOnCameraView) { Vector2 pos = GfxUtil.ScreenPointToStagePoint(pixelPos); if (Mathf.Abs(m_PixPos.x - pos.x) > 0.01f || Mathf.Abs(m_PixPos.y - pos.y) > 0.01f) { m_DisplayInfo.X = pos.x; m_DisplayInfo.Y = pos.y; bNeedToUpdateDisplayInfo = true; } } OnPositionChange(); }