protected override void OnStart()
    {
        base.OnStart();
        if (FollowTarget != null)
        {
            followTargetController = FollowTarget.GetComponent <SceneObjController>();
        }


        m_CheckAroundController = GetComponent <CheckAroundEntityController>();
        if (m_CheckAroundController == null)
        {
            m_CheckAroundController = gameObject.AddComponent <CheckAroundEntityController>();
        }

        m_MoveSpeed_Max  = 0.1f;
        m_ForceSteer_Max = 1f;

        m_StopRadius    = 0.5f;
        m_SlowingRadius = 1f;

        m_CurrentVelocity = Vector2.zero;
        m_TempMass        = 1;
        m_Steering        = new SteeringManager(this);

        m_PathfindingRequested = false;
        InitAnimComponent();
    }
 public void Separate(CheckAroundEntityController pawn, List <CheckAroundEntityController> neighbors)
 {
     if (pawn == null || neighbors.Count <= 0)
     {
         return;
     }
     Steering += DoSparate(pawn, neighbors);
 }
        public float comfortDistance          = 1; //可接受距离

        Vector2 DoSparate(CheckAroundEntityController pawn, List <CheckAroundEntityController> neighbors)
        {
            Vector2 force = new Vector2(0, 0);

            //遍历全部邻居
            foreach (var n in neighbors)
            {
                //检测排除当前entity
                if ((n != null) && (n.Entity != pawn.Entity))
                {
                    //计算当前角色和邻居之间的距离
                    Vector2 toNeighbor = pawn.Entity.GetPosition() - n.Entity.GetPosition();
                    float   length     = toNeighbor.magnitude;
                    //计算这个邻居引起的操控力(排斥力) 大小和距离成反比
                    force += toNeighbor.normalized / length;
                    //如果二者之间距离大于可接受的范围,排斥力再乘以一个限制距离
                    if (length < comfortDistance)
                    {
                        force *= multiplierInsideDistance;
                    }
                }
            }
            return(force);
        }