private Transform FindBestCoverSpot() { if (ai.GetBestCoverSpot() != null) { if (CheckIfSpotIsValid(ai.GetBestCoverSpot())) { return(ai.GetBestCoverSpot()); } } float minAngle = 90; Transform bestSpot = null; for (int i = 0; i < avaliableCovers.Length; i++) { Transform bestSpotInCover = FindBestSpotInCover(avaliableCovers[i], ref minAngle); if (bestSpotInCover != null) { bestSpot = bestSpotInCover; } } return(bestSpot); }
public override NodeState Evaluate() { Transform coverSpot = ai.GetBestCoverSpot(); if (coverSpot == null) { return(NodeState.FAILURE); } ai.SetColor(Color.blue); float distance = Vector3.Distance(coverSpot.position, agent.transform.position); if (distance > 0.2f) { agent.isStopped = false; agent.SetDestination(coverSpot.position); return(NodeState.RUNNING); } else { agent.isStopped = true; return(NodeState.SUCCESS); } }