moveFromAngle method

bool moveFromAngle(
  1. double speed,
  2. double angle
)

Move Player to direction by radAngle

Implementation

bool moveFromAngle(double speed, double angle) {
  double nextX = (speed * dtUpdate) * cos(angle);
  double nextY = (speed * dtUpdate) * sin(angle);
  Offset nextPoint = Offset(nextX, nextY);

  final rect = toRect();
  Offset diffBase = Offset(
        rect.center.dx + nextPoint.dx,
        rect.center.dy + nextPoint.dy,
      ) -
      rect.center;

  Offset newDiffBase = diffBase;

  Rect newPosition = rect.shift(newDiffBase);

  if (_isCollision(newPosition.positionVector2)) {
    onMove(0, getDirectionByAngle(angle), angle);
    return false;
  }

  isIdle = false;
  position = newPosition.positionVector2;
  onMove(speed, getDirectionByAngle(angle), angle);
  return true;
}