void CheckForVisiblePlayers() { Transform[] targets = PlayersInSight(stats.fieldOfView, transform); ClosestObject closest = FindClosest(targets); if (closest.closest != null) { Transform closestPlayer = closest.closest.transform; if (closestPlayer != null) { pathFindState = PathFindState.Following; follow.target = closestPlayer; } } }
void Update() { if (moveState == MoveState.Jumping) { data = agent.currentOffMeshLinkData; } triggerState = SetTriggerState(); if (moveState != MoveState.Ziplining && moveState != MoveState.Roping) { for (int i = 0; i < moveScripts.Length - 1; i++) { if (moveScripts[i] != null) { if (moveScripts[i] == null) { Debug.LogError(moveScripts[i] + "doesnt exist!"); break; } moveScripts[i].enabled = i == (int)moveState; } } } else if (moveState == MoveState.Roping) { foreach (Behaviour b in moveScripts) { b.enabled = false; } moveScripts[5].enabled = true; } else if (moveState == MoveState.Ziplining) { foreach (Behaviour b in moveScripts) { b.enabled = false; } moveScripts[4].enabled = true; } for (int i = 0; i < pathFindScripts.Length - 1; i++) { if (pathFindScripts[i] == null) { // Debug.LogError(pathFindScripts[i] + "doesnt exist!"); break; } pathFindScripts[i].enabled = i == (int)pathFindState; } for (int i = 0; i < shootScripts.Length - 1; i++) { if (shootScripts[i] == null) { // Debug.LogError(shootScripts[i] + "doesnt exist!"); break; } shootScripts[i].enabled = i == (int)shootState; } if (wayPoints.wayPointList.Count < 2) { pathFindState = PathFindState.Objective; } if (pathFindState != PathFindState.Following) { CheckForVisiblePlayers(); } if (agent.enabled) { heading.LookAt(transform.position + agent.velocity); } }