// Update is called once per frame void Update() { if (isAlive) { if (isMoving) { var movement = transform.forward * Time.deltaTime * moveSpeed; if (movable.CanMoveBy(movement)) { transform.position += movement; } else { transform.Rotate(0, 90, 0); } } Physics.OverlapSphere(transform.position, wateringRange) .Select(collider => collider.transform.parent) .SelectMany(parent => parent.GetComponents <Flower>()) .ForAll(flower => flower.WaterBy(Time.deltaTime)); } lifeBar.size = Mathf.Max(currentLife, 0) / maximumLife; }