shake method

void shake({
  1. required WaitEvents wait,
  2. double time = 0.1,
  3. double amount = 2,
  4. bool slowlyHalt = false,
})

Implementation

void shake(
    {required WaitEvents wait, double time = 0.1, double amount = 2, bool slowlyHalt = false}) {
  if (_shaking) return;
  _shaking = true;
  final beforePos = _position.clone();
  wait.waitAndDo(
    time: time,
    onUpdate: (deltaTime, remaining) {
      final ratio = slowlyHalt ? (remaining / time) : 1;
      final amt = amount * ratio / _zoom;
      _position.x = beforePos.x + MathUtils.randDouble(-amt, amt);
      _position.y = beforePos.y + MathUtils.randDouble(-amt, amt);
    },
    onEnd: () {
      _position.setFrom(beforePos);
      _shaking = false;
    },
  );
}