/* * keep checking for the closest pursuer and set the state */ void CheckNearbyPursuers() { float closestDist = float.MaxValue; foreach (PathfindingChaser pursuer in pursuers) { float dist = (pursuer.transform.position - transform.position).magnitude; if (dist < closestDist) { closestDist = dist; currentPursuer = pursuer; } } if (isWandering()) { if (hasLineOfSight(currentPursuer) && closestDist < 3.0f) { currentState = State.FLEE; } } else if (isFleeing()) { if (!hasLineOfSight(currentPursuer) && closestDist > 3.0f) { currentState = State.WANDER; CheckNearbyPursuers(); } } }
private bool hasLineOfSight(PathfindingChaser pursuer) { if (Physics.Linecast(transform.position, pursuer.transform.position)) { return(false); } return(true); }