Beispiel #1
0
        private void Start()
        {
            _droidAgent                    = GetComponent <NavMeshAgent>();
            _droidLaze                     = GetComponent <DroidLaze>();
            _droidAttack                   = GetComponent <DroidAttack>();
            _droidHealthSetter             = GetComponent <HealthSetter>();
            _droidHealthSetter.healthZero += NotifyKilled;

            _player           = GameObject.FindGameObjectWithTag(TagManager.Player)?.transform;
            _distractorHolder = GameObject.FindGameObjectWithTag(TagManager.DistractorHolder)?.transform;

            _meshCenter          = transform.position;
            _terrainMeshVertices = transform.parent.GetComponent <MeshFilter>().mesh.vertices;
            _droidAttackTarget   = DroidAttackTarget.None;

            SetAgentRandomPatrolPoint();
        }
Beispiel #2
0
        private void CheckAndSetNextTarget()
        {
            var angleWRTTarget = DroidPatrolHelpers
                                 .CheckTargetInsideFOV(_player, minimumDetectionDistance, maxLookAngle, lookingPoint);

            _currentNormalizedLookAngle = angleWRTTarget;

            if (angleWRTTarget != -1)
            {
                _droidAttackTarget = DroidAttackTarget.Player;
                CheckAndSetInterestingTarget(_player);
                MissionManager.instance.IncrementSpottedTimes();
            }
            else
            {
                var closestDistractor = DroidPatrolHelpers
                                        .GetClosestDistractor(_distractorHolder, transform);

                angleWRTTarget = DroidPatrolHelpers
                                 .CheckTargetInsideFOV(closestDistractor,
                                                       minimumDetectionDistance, maxLookAngle, lookingPoint, false);

                _currentNormalizedLookAngle = angleWRTTarget;

                if (angleWRTTarget != -1)
                {
                    _droidAttackTarget = DroidAttackTarget.Distractor;
                    CheckAndSetInterestingTarget(closestDistractor);
                }
                else if (_droidAttackTarget != DroidAttackTarget.None)
                {
                    _droidAttackTarget = DroidAttackTarget.None;
                    SetAgentRandomPatrolPoint();
                }
            }
        }