Ускорение и скорость персонажа? [Закрыто]

Введение:

Я играю в игру, и у главного героя нет ускорения, он только продвигается на 2 пикселя за Кадр, что выглядит несколько плохо и однообразно.

Игра создается на C ++ для Arduboy, небольшого устройства с появлением старых программируемых Gameboys с Arduino и небольшого монохромного экрана 128x64 пикселей.

introducir la descripción de la imagen aquí

<час>

Вопрос:

Какова процедура для ускорения моего персонажа?

GitHub

-1
задан 13.07.2017, 19:26
0 ответов

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

Алгоритм (pseudo-C):

#define ACELERACION 0.1
#define VELOCIDAD_MAX 2
float vel = 0, pos = 0;

/* Inicio del bucle, lo anterior eran sólo definiciones */
if ( botón == derecha ) {
  /* Aceleramos a la derecha (o frenamos inercia a la izquierda) */
  vel += ACELERACION;
  /* Controlamos que no podamos avanzar más rápido del límite */
  if (vel > VELOCIDAD_MAX) {
    vel = VELOCIDAD_MAX;
  }
} else if (boton = izquierda) {
  /* Aceleramos a la izquierda (o frenamos inercia a la derecha) */
  vel -= ACELERACION;
  /* Controlamos que no podamos avanzar más rápido del límite */
  if (vel < -VELOCIDAD_MAX) {
    vel = -VELOCIDAD_MAX;
  }
} else {
  /* Si estamos en cero o sólo queda un paso para parar, paramos.
    también podría ser un simple "if (vel == 0) {" */
  if (abs(vel) < ACELERACION) {
    vel = 0;
  } else if (vel > 0) {
    /* No paramos inmediatamente, vamos decelerando */
    vel -= ACELERACION;
  } else {
    vel += ACELERACION;
  }
}
/* Fin de las comprobaciones, actualizamos la posición */
pos += vel;

Положение - double, может быть ты был должен перемещать это в целое число, если необходимо, или может быть работать только с целыми числами установленной запятой, что ты предпочел.

Я надеюсь, что он ты помогает.

3
ответ дан 03.12.2019, 17:51