示例#1
0
    Vector3 Cohesion(List <SwarmMember> neighboursShortList)
    {
        Vector3 cohesionVector = new Vector3();
        int     countMembers   = 0;
        var     neighbours     = controller.GetNeighboursUsingShortList(neighboursShortList, this, conf.cohesionRadius);

        if (neighbours.Count == 0)
        {
            return(cohesionVector);
        }
        foreach (var member in neighbours)
        {
            if (IsInFOV(rigidBody.position))
            {
                cohesionVector += (Vector3)member.rigidBody.position;
                countMembers++;
            }
        }
        if (countMembers == 0)
        {
            return(cohesionVector);
        }
        cohesionVector /= countMembers;
        cohesionVector  = cohesionVector - (Vector3)rigidBody.position;
        cohesionVector  = Vector3.Normalize(cohesionVector);
        return(cohesionVector);
    }