2D游戏 NGUI 不同Atlas 同Panel下 ,根据图片的x值 UISprite 前后深度算法

来源:互联网 发布:sql中update的用法 编辑:程序博客网 时间:2024/05/19 04:29
2D游戏 NGUI 不同Atlas 同Panel下 ,根据图片的x值 UISprite 前后深度算法

usingUnityEngine;
///<summary>
///根据角色Y值来改变UI的层级,挂在每个图片上
///</summary>
publicclassUISpriteDepth:MonoBehaviour
{
   publicfloatTerrainMaxY = 358f;//地形可活动的高度范围 最高点 ,坐标系 :看角色本地坐标
   publicfloatTerrainMinY = -141f;//地形可活动的高度范围 最低
   publicUISpritesprite;
   publicintdepth = 0;
   publicfloatm = 0f;//转换后的UI深度
   publicfloaty = 0f;
       voidStart ()
       {
          if(TerrainMaxY == 0 || TerrainMinY==0)
           {
              Debug.LogError("赋值啊");
           }
        sprite = GetComponent<UISprite>();
        InvokeRepeating("ReDelay01", 0, 0.1f);
    }
   voidReDelay01()
    {
       //地形y值范围(TerrainMinY,TerrainMaxY)
       //UI depth =  (0,99)
        y = transform.localPosition.y;
        y = y > 0 ?Mathf.Abs(y - TerrainMaxY) :Mathf.Abs(y) + TerrainMaxY;//Y值 大变小 小变大
       floatTerrainHeightRange =Mathf.Abs(TerrainMaxY) +Mathf.Abs(TerrainMinY);//地形可活动的高度范围
        m = map(y, 0, TerrainHeightRange, 0, 99f);
        depth = (int)m;
        sprite.depth = depth > 0 ? depth : 0;
    }
   publicstaticfloatmap(floatvalue,floatleftMin,floatleftMax,floatrightMin,floatrightMax)
    {
       returnrightMin + (value-leftMin) * (rightMax- rightMin) / (leftMax-leftMin);
    }
}
0 0