moveTowardsTarget<T extends GameComponent> method

bool moveTowardsTarget<T extends GameComponent>({
  1. required T target,
  2. void close()?,
  3. double margin = 4,
  4. MovementAxis movementAxis = MovementAxis.all,
})

This method move this component to target Need use Movement mixin. Method that bo used in update method. return true if moved.

Implementation

bool moveTowardsTarget<T extends GameComponent>({
  required T target,
  void Function()? close,
  double margin = 4,
  MovementAxis movementAxis = MovementAxis.all,
}) {
  final rectPlayerCollision = target.rectCollision.inflate(margin);

  if (rectCollision.overlaps(rectPlayerCollision)) {
    close?.call();
    stop();
    return false;
  }

  final radAngle = getAngleToTarget(target);
  var directionToMove = BonfireUtil.getDirectionFromAngle(
    radAngle,
  );

  final newDirectionToMove = _checkRestrictAxis(
    directionToMove,
    movementAxis,
  );
  if (newDirectionToMove != null) {
    directionToMove = newDirectionToMove;
  } else {
    stop();
    return false;
  }

  if (canMove(directionToMove, ignoreHitboxes: target.shapeHitboxes)) {
    moveFromDirection(directionToMove, resetCrossAxis: true);
    return true;
  } else {
    stop();
    return false;
  }
}