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