protected virtual void FixedUpdate() { if (!CanMove) { return; } float dt = Time.fixedDeltaTime; _transform.MoveTowards(_nextWaypoint.Transform.position, _speed * dt); if (Vector3.Distance(_transform.position, _nextWaypoint.Transform.position) < float.Epsilon) { if (_nextWaypoint.HasCooldown) { _cooldown.Start(_nextWaypoint.Cooldown); } _transform.position = _nextWaypoint.Transform.position; ArrivalEvent?.Invoke(this, EventArgs.Empty); SetWaypoint(_nextWaypoint.NextWaypoint); } }