Ir al contenido
Descargar

Movimiento

Brasa mueve las instancias sola en cada paso: suma hspeed a x y vspeed a y, después de aplicar gravedad y fricción. Tú solo defines las velocidades.

Los ángulos van en grados: 0 = derecha, 90 = arriba, 180 = izquierda, 270 = abajo.

Propiedad Tipo Qué es
hspeed float Velocidad horizontal, en píxeles por paso. Positivo = derecha.
vspeed float Velocidad vertical, en píxeles por paso. Positivo = abajo.
gravity float Aceleración por paso en la dirección gravityDirection. 0 = sin gravedad.
gravityDirection float Dirección de la gravedad en grados. Por defecto 270 (hacia abajo).
friction float Cuánto disminuye la velocidad total por paso, hasta detenerse (sin invertir el sentido).
maxFallSpeed float El límite de la caída: el vspeed hacia abajo nunca lo supera. La subida no está limitada. 0 = sin límite.

En el editor, estos cuatro están en la sección Física del Inspector del objeto y ya llegan listos al onSpawn.

Función Qué hace Ejemplo
float speed() const La velocidad actual (la magnitud de hspeed y vspeed juntos). if (speed() > 4) ...
void setSpeed(float value) Cambia la velocidad manteniendo la dirección. setSpeed(3);
float direction() const La dirección del movimiento, de 0 a 360 grados. float d = direction();
void setDirection(float degrees) Apunta el movimiento hacia un ángulo, manteniendo la velocidad. setDirection(90);
void push(float degrees, float force) Suma velocidad en una dirección. push(90, 6); // impulso hacia arriba
void moveToward(float targetX, float targetY, float velocity) Apunta hacia un punto y define la velocidad. moveToward(player.x, player.y, 1.5f);
bool moveAndStop(float dx, float dy) Avanza dx, dy píxel a píxel y se detiene contra un sólido, poniendo en cero la velocidad de ese eje. Devuelve true si chocó. moveAndStop(dx, 0);
bool moveAndStop() El estándar de plataformas: aplica gravedad y fricción y avanza por hspeed/vspeed, deteniéndose en los sólidos. Llámalo una vez en el onUpdate. moveAndStop();
bool onGround() true si hay un sólido 1 píxel debajo de la caja de colisión. if (pressed("pular") && onGround()) vspeed = -4.5f;
bool hitFloor() const Después de moveAndStop: tocó el suelo, bajando. if (hitFloor()) ...
bool hitCeiling() const Después de moveAndStop: tocó el techo, subiendo. if (hitCeiling()) ...
bool hitWall() const Después de moveAndStop: chocó con una pared, de cualquier lado. if (hitWall()) flipX = !flipX;
bool hitWallLeft() const, bool hitWallRight() const Lo mismo, solo para la pared de la izquierda o de la derecha. if (hitWallLeft()) ...

Las funciones hit... describen la última llamada a moveAndStop y valen hasta la siguiente. Mira Juego de plataformas.

  • La dirección se recuerda incluso con la instancia detenida, así que setSpeed(2) después de detenerse vuelve a avanzar hacia el mismo lado.
  • Cuando moveAndStop avanza en el paso, el movimiento automático por hspeed/vspeed se omite en ese paso, para no avanzar dos veces.
  • moveAndStop avanza como máximo 4096 píxeles por eje en una llamada. Quien empieza dentro de un sólido puede salir, pero no entrar más.
  • Para paredes, marca Sólido en el objeto de la pared. Mira Colisiones.