protected override void Load() { _humedales = FindObjectsOfType <Humedal>().ToList(); _actualHumedal = FindClosestAliveHumedal(); transform.position = _actualHumedal.transform.position; GenerateRandomPosition(); EveryUpdate .Where(_ => !_actualHumedal.IsBurnt()) .Where(_ => canMove) .Subscribe(_ => JumpAroundHumedal()) .AddTo(_disposables); EveryUpdate .Where(_ => _actualHumedal.IsBurnt()) .Subscribe(_ => GoToOtherHumedal()) .AddTo(_disposables); }
private Humedal FindClosestAliveHumedal() { var minDistance = 10000f; Humedal target = null; _humedales.ForEach(it => { if (it.IsBurnt()) { return; } var distance = Vector3.Distance(transform.position, it.transform.position); if (!(distance < minDistance)) { return; } minDistance = distance; target = it; }); return(target); }
private void GoToOtherHumedal() { canMove = true; _actualHumedal = FindClosestAliveHumedal(); _jumpAroundPosition = _actualHumedal.transform.position; }
private void MoveTowardsTarget(Humedal target) { transform.LookAt(target.transform.position); transform.Translate(Vector3.forward * (_speed * Time.deltaTime)); }
private static bool HumedalIsNotNull(Humedal it) => it != null;