private void SetAgentRandomPatrolPoint() { if (_lazingAround) { return; } _droidAgent.stoppingDistance = distanceToStopFromPatrolPoint; var randomPatrolPoint = DroidPatrolHelpers.GetNextTarget(_terrainMeshVertices) + _meshCenter; _currentTarget = transform.parent; SetAgentDestination(randomPatrolPoint); LookTowardsTarget(randomPatrolPoint); }
private void CheckPatrolPointTargetReached() { if (!_droidAgent.isOnNavMesh) { return; } switch (_droidAttackTarget) { case DroidAttackTarget.Player: if (!_attacking && DroidPatrolHelpers.IsAngleWithinToleranceLevel(_currentNormalizedLookAngle, angleTolerance)) { _coroutine = StartCoroutine(AttackTarget(_player, true)); } break; case DroidAttackTarget.Distractor: if (!_attacking && DroidPatrolHelpers.IsAngleWithinToleranceLevel(_currentNormalizedLookAngle, angleTolerance)) { _coroutine = StartCoroutine(AttackTarget(_currentTarget)); } break; } if (!_droidAgent.pathPending && !_lazingAround && _droidAttackTarget == DroidAttackTarget.None) { if (_droidAgent.remainingDistance <= _droidAgent.stoppingDistance) { if (!_droidAgent.hasPath || _droidAgent.velocity.sqrMagnitude == 0f) { _coroutine = StartCoroutine(LazePatrolPoint()); } } } }
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(); } } }