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); }
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); }
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); }