Esempio n. 1
0
        private void UpdateActionIfTargetPointReached()
        {
            switch (_creatureState)
            {
            case CreatureState.PlayerHostile:
                _creatureAgent.stoppingDistance = stopFromPlayer;
                if (!_attacking &&
                    CreatureHelpers.IsAngleWithinToleranceLevel(_currentNormalizedAngle,
                                                                angleToleranceLevel))
                {
                    _coroutine = StartCoroutine(AttackPlayer());
                }
                break;

            case CreatureState.PlayerFound:
                _creatureAgent.stoppingDistance = stopFromPlayer;
                break;

            case CreatureState.Idle:
                _creatureAgent.stoppingDistance = stopFromPoint;
                break;
            }

            if (!_creatureAgent.pathPending && !_lazingAround && _creatureState == CreatureState.Idle)
            {
                if (_creatureAgent.remainingDistance <= _creatureAgent.stoppingDistance)
                {
                    if (!_creatureAgent.hasPath || _creatureAgent.velocity.sqrMagnitude == 0f)
                    {
                        _coroutine = StartCoroutine(LazeAroundPoint());
                    }
                }
            }
        }
Esempio n. 2
0
        private void CheckAndSetNextTarget()
        {
            if (_creatureState == CreatureState.PlayerHostile)
            {
                SetPlayerTarget();
            }
            else
            {
                float angleWRTTarget = CreatureHelpers
                                       .CheckTargetInsideFOV(_player, maximumDetectionDistance, lookAngle, lookingPoint);

                if (angleWRTTarget != -1)
                {
                    _creatureState          = CreatureState.PlayerFound;
                    _currentNormalizedAngle = angleWRTTarget;
                    SetPlayerTarget();
                }
                else if (_creatureState == CreatureState.PlayerFound)
                {
                    _creatureState = CreatureState.Idle;
                    SelectRandomPatrolPoint();
                }
            }
        }