Пример #1
0
    /// <summary>
    /// 获得离摄像机最近的单位。最近指单位在镜头上的2D位置离镜头中央最近,即“看起来”最近。
    /// </summary>
    /// <returns>最近的单位</returns>
    public Unit GetClosestUnit()
    {
        Unit player = GameCtrl.PlayerUnit;

        if (player == null)
        {
            return(null);
        }

        IEnumerator <Unit> it = Gamef.GetUnitEnumerator();
        Unit    resUnit       = null;
        float   minAngle      = GameDB.MAX_AIMING_ANGLE;
        Vector3 fwd           = transform.forward;
        Vector3 pos           = transform.position;
        Unit    tmp;

        do
        {
            tmp = it.Current;
            if (tmp != player)
            {
                if (tmp == null)
                {
                    Debug.Log("???");
                    it.Reset();
                    tmp = it.Current;
                }
                float angle = Vector3.Angle(fwd, tmp.transform.position - pos);
                if (angle < minAngle)
                {
                    minAngle = angle;
                    resUnit  = tmp;
                }
            }
        } while (it.MoveNext());
        Debug.Log("Unit Closest to Player is " + (resUnit == null ? "null" : resUnit.gameObject.name));
        return(resUnit);
    }