Пример #1
0
    virtual protected Vector3 MoveTowardsPlayer()
    {
        var radii = new List <float>()
        {
            conf.cohesionRadius, conf.alignmentPriority, conf.separationPriority, conf.avoidancePriority
        };
        var maxRadius           = radii.Max();
        var neighboursShortList = controller.GetNeighbours(this, maxRadius);

        Vector3 finalVec =
            conf.cohesionPriority * Cohesion(neighboursShortList) +
            conf.alignmentPriority * Alignment(neighboursShortList) +
            conf.separationPriority * Separation(neighboursShortList);

        //conf.avoidancePriority * Avoidance();
        if (HasLineOfSightOnTarget())
        {
            //Attack
            var targetDirection = Vector3.Normalize(target.position - transform.position);
            finalVec += conf.pathfindPriority * targetDirection;
        }
        else
        {
            finalVec += conf.pathfindPriority * FollowSwarmLeader();
        }
        return(finalVec);
    }