Как сделать так, чтобы объект плавно менял направление?

Вопрос: как вы определяете, есть ли неделя в 2012 году или в 2013 году? Ваше предположение, я думаю, состоит в том, что с 6 дней недели в 2013 году эта неделя должна быть отмечена как первая неделя 2013 года.

Не уверен, что это правильный путь. Эта неделя началась в 2012 году (понедельник 31 декабря), поэтому она должна быть отмечена как последняя неделя 2012 года, поэтому она должна быть 53-м 2012 года. Первая неделя 2013 года должна начаться в понедельник 7-м.

Теперь вы можете обработать конкретный случай крайних недель (первая и последняя неделя года) с использованием информации дня недели. Все зависит от вашей логики.

1
задан Machavity 27 July 2018 в 13:02
поделиться

2 ответа

Вы не хотите, чтобы xDirection и yDirection были только 1 или -1. Они должны быть пропорциональны разнице между положением мыши и прямоугольника.

Отредактировано с учетом комментариев.

function changeDir()
{
  xDiff = mouseXCoord - x;
  yDiff = mouseYCoord - y;
  // Scale the smallest diff to be 1 (or less)
  minDiff = max(min(xDiff, yDiff), 1);
  deltaX = xDiff / minDiff;
  deltaY = yDiff / minDiff;
  // Scale the deltas to limit the largest to mainThrust
  maxDelta = max(max(deltaX, deltaY), 1)
  if (maxDelta>mainThrust) 
  {
    deltaX = deltaX * mainThrust / maxDelta;
    deltaY = deltaY * mainThrust / maxDelta;
  }

  if(mouseXCoord-5<x && x<mouseXCoord+5)
  {
    xDirection = 0;//stop moving if close to mouse
  }
  else 
  {
    xDirection = deltaX;
  }

  if(mouseYCoord-5<y && y<mouseYCoord+5)
  {
    yDirection = 0;//stop moving if close to mouse
  }
  else 
  {
    yDirection = deltaY;
  }
}
2
ответ дан 2 September 2019 в 22:57
поделиться

Вместо того, чтобы иметь xDirection и yDirection (синус и косинус вашего направления, фактически), резко определенные как 0, 1, или -1, вам нужно более точно определить направление, в котором вы должны в конечном итоге двигаться, и вспомнить, в каком направлении вы двигались в последний раз и сколько "угловых шагов" вы сделали, чтобы изменить направление от того, что было, к тому, что должно быть.

Сколько таких угловых шагов вы хотите сделать для изменения направления, и должен ли каждый шаг быть одинакового размера или зависеть от того, как быстро вы двигаетесь и/или как резко вы поворачиваете и т.д., это то, что вы должны адаптировать методом проб и ошибок, поскольку, похоже, что вы в основном стремитесь к тому, чтобы все "выглядело" правильно, поэтому трудно дать точный рецепт (для того, что выглядит правильно для вас; -).

0
ответ дан 2 September 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: