public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
    {
        Vector3 position;

        if (target != null)
        {
            position = target.position;
        }
        else
        {
            position = trWhenLeaderDead.position;
        }

        Vector3 dir      = position - entity.Position;
        float   distance = dir.magnitude;

        if (distance < minDistance)
        {
            distance -= minDistance;
            return(dir.normalized * leaderWeight * distance);
        }
        else
        {
            return(dir.normalized * leaderWeight);
        }
    }
 public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
 {
     if ((target.position - transform.position).magnitude <= distance)
     {
         return((target.position - entity.Position).normalized * -1 * awayWeight);
     }
     return(Vector3.zero);
 }
    public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
    {
        Vector3 center = Vector3.zero;

        for (int i = 0; i < entities.Count; i++)
        {
            center += entities[i].Position;
        }
        center /= entities.Count;
        return((center - entity.Position).normalized * CohesionWeight);
    }
Exemple #4
0
    public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
    {
        Vector3 dir = Vector3.zero;

        for (int i = 0; i < entities.Count; i++)
        {
            dir += entities[i].Direction;
        }
        dir /= entities.Count;
        return(dir.normalized * alineationWeight);
    }
Exemple #5
0
    public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
    {
        var     obj = Physics.OverlapSphere(entity.Position, range, mask);
        Vector3 dir = Vector3.zero;

        for (int i = 0; i < obj.Length; i++)
        {
            var     currEntity = obj[i];
            Vector3 currDir    = (entity.Position - currEntity.transform.position);
            float   distance   = currDir.magnitude;
            currDir = currDir.normalized * (range - distance);
            dir    += currDir;
        }
        return(dir * predatorWeight);
    }
    public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
    {
        Vector3 dir = Vector3.zero;

        for (int i = 0; i < entities.Count; i++)
        {
            var currEntity = entities[i];
            if (Vector3.Distance(currEntity.Position, entity.Position) < range)
            {
                Vector3 currDir  = (entity.Position - currEntity.Position);
                float   distance = currDir.magnitude;
                currDir = currDir.normalized * (range - distance);
                dir    += currDir;
            }
        }
        return(dir.normalized * separationWeight);
    }
 public Vector3 GetDir(List <IFlockEntity> entities, IFlockEntity entity)
 {
     return((target.position - entity.Position).normalized * leaderWeight);
 }