Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }