Exemplo n.º 1
0
        // Static Cover
        ParagonAI.CoverData FindStaticCover(Transform targetTransform, Transform transformToDefend)
        {
            if (targetTransform && myTransform)
            {
                Vector3 targetTransformPos = targetTransform.position;

                //Closest Covers
                if (currentCoverSeekMethod == CoverSeekMethods.WithinCombatRange)
                {
                    return(FindCoverWithinCombatRange(targetTransformPos, transformToDefend));
                }
                //Advance Towards Cover
                else if (currentCoverSeekMethod == CoverSeekMethods.AdvanceTowardsTarget)
                {
                    return(FindCoverWithinCombatRange(targetTransformPos, transformToDefend));
                }
                //Random Cover
                else
                {
                    return(FindRandomCover(targetTransformPos, transformToDefend));
                }
            }
            ParagonAI.CoverData bsData = new ParagonAI.CoverData();
            return(bsData);
        }
Exemplo n.º 2
0
        public override void EachFrame()
        {
            if (coverFinderScript)
            {
                //Choose which part of the cpover node we should move to based on whether we are suppressed and firing.
                if (!gunScript.IsFiring() || !baseScript.shouldFireFromCover)
                {
                    targetVector = baseScript.currentCoverNodePos;
                }
                else
                {
                    targetVector = baseScript.currentCoverNodeFiringPos;
                }


                if (baseScript.currentCoverNodeScript || foundDynamicCover)
                {
                    //If we can't reach our cover, find a different piece of cover.
                    if (agent.pathStatus == UnityEngine.AI.NavMeshPathStatus.PathPartial)
                    {
                        LeaveCover();
                    }
                    //Start the countdown to leave cover once we reach it.
                    if (!baseScript.inCover && agent.remainingDistance <= 0)
                    {
                        baseScript.inCover = true;
                        StartCoroutine(SetTimeToLeaveCover(Random.Range(minTimeInCover, maxTimeInCover)));
                    }
                }
                else
                {
                    //If we don't have cover, find cover.
                    ParagonAI.CoverData coverData = coverFinderScript.FindCover(baseScript.targetTransform, baseScript.keyTransform);

                    if (coverData.foundCover)
                    {
                        SetCover(coverData.hidingPosition, coverData.firingPosition, coverData.isDynamicCover, coverData.coverNodeScript);
                        //Play vocalization
                        if (soundScript)
                        {
                            soundScript.PlayCoverAudio();
                        }
                    }
                    //If we can't find cover, charge at our target.
                    else if (baseScript.targetTransform)
                    {
                        targetVector = baseScript.targetTransform.position;
                    }
                }
            }
            //If we don't have cover, charge at our target.
            else if (baseScript.targetTransform)
            {
                targetVector = baseScript.targetTransform.position;
            }
        }
Exemplo n.º 3
0
        // Static Cover
        ParagonAI.CoverData FindStaticCover(Transform targetTransform, Transform transformToDefend)
        {
            if (targetTransform && myTransform)
            {
                Vector3 targetTransformPos = targetTransform.position;

                //Closest Covers
                if (currentCoverSeekMethod == CoverSeekMethods.WithinCombatRange)
                {
                    return FindCoverWithinCombatRange(targetTransformPos, transformToDefend);
                }
                //Advance Towards Cover
                else if (currentCoverSeekMethod == CoverSeekMethods.AdvanceTowardsTarget)
                {
                    return FindCoverWithinCombatRange(targetTransformPos, transformToDefend);
                }
                //Random Cover
                else
                {
                    return FindRandomCover(targetTransformPos, transformToDefend);
                }

            }
            ParagonAI.CoverData bsData = new ParagonAI.CoverData();
            return bsData;
        }