protected virtual void FixedUpdate() { if (GameSceneManager.Instance.LoadingState != LoadingState.NOT_LOADING) { return; } HandleStatusEffects(); CalculateAnimation(); if (!_player.IsAlive || !IsAlive) { _navigation.Stop(); return; } if (_statusEffects.Any(x => x.OverrideNavigation)) { foreach (StatusEffect x in _statusEffects) { x.Navigation(); } } else { if (_hasAggro) { if ((_target.transform.position.ToVector2() - transform.position.ToVector2()).magnitude > _aggroDistance * 2.0f) { _hasAggro = false; _navigation.MoveTo(_spawnPosition, false); return; } bool playerVisible = PlayerIsVisible(_aggroDistance); _navigation.MoveTo(_target, playerVisible); if (!playerVisible && !_navigation.HasPath) { _navigation.Stop(); } } else { if (!CheckAggro()) { if (_navigation.AtDestination()) { _navigation.Stop(); } } } } }
private void FixedUpdate() { if (_navigation.AtDestination() && !_movingToPlayer) { _movingToPlayer = true; } if (_movingToPlayer) { _navigation.MoveTo(Main.Instance.player.gameObject, true); } }