Pular para o conteúdo
Baixar

Mover com o teclado

Você quer que um objeto ande enquanto o jogador segura as setas.

#include <brasa/brasa.hpp>
using namespace brasa;
class Player : public Entity {
public:
void onUpdate() override {
const float speed = 2.0f; // pixels por passo
if (held(Key::Left) || held(Key::A)) x -= speed;
if (held(Key::Right) || held(Key::D)) x += speed;
if (held(Key::Up) || held(Key::W)) y -= speed;
if (held(Key::Down) || held(Key::S)) y += speed;
}
};
BRASA_ENTITY(Player);
  • onUpdate roda 60 vezes por segundo. A cada vez, o código confere o teclado.
  • held(Key::Left) é verdadeiro enquanto a tecla está segurada.
  • x cresce para a direita e y cresce para baixo. Por isso “para cima” é y -= speed.
  • || quer dizer ou: a seta e a letra fazem a mesma coisa.

Andar na diagonal com a mesma velocidade. Somando as duas direções, a diagonal fica mais rápida. Guarde a direção em dx/dy e corrija com 0,7071 (é assim no tutorial):

if (dx != 0.0f && dy != 0.0f) { dx *= 0.7071f; dy *= 0.7071f; }

Não atravessar paredes. Marque o objeto da parede como Sólido no Inspetor e ande com moveAndStop, que para quando encosta num sólido:

float dx = 0, dy = 0;
if (held(Key::Left)) dx -= 2;
if (held(Key::Right)) dx += 2;
moveAndStop(dx, dy);

Uma ação por toque. Para pular ou abrir um menu, use pressed, que vale só no passo em que a tecla foi apertada:

if (pressed(Key::Space)) vspeed = -6; // pulo