Input + moviment del jugador amb fletxes (flip, anim walk/stand, bounds) (v0.8.0)
This commit is contained in:
1 parent
bee9b650db
commit
96cbdf96b6
5 files changed
+99
-18
No files matched your search
@@ -1,10 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include "core/rendering/sprite/animated_sprite.hpp"
|
||||
|
||||
class Player : public AnimatedSprite {
|
||||
public:
|
||||
// Construeix el jugador a partir del recurs d'animació "player.yaml"
|
||||
// ja registrat al cache. Comença en l'animació "stand".
|
||||
Player(float x, float y);
|
||||
// Mapeig de tecles per al moviment del jugador. Cada jugador local en pot
|
||||
// tenir unes diferents; així podem afegir-ne més sense tocar el codi del
|
||||
// Player, només instanciant amb Controls distints.
|
||||
struct Controls {
|
||||
SDL_Scancode up;
|
||||
SDL_Scancode down;
|
||||
SDL_Scancode left;
|
||||
SDL_Scancode right;
|
||||
};
|
||||
|
||||
// Sprite 12×24 amb perspectiva falsa: la base real del jugador són els
|
||||
// 12×12 inferiors. Per això el bounding horitzontal és l'amplada completa,
|
||||
// però verticalment permetem que el cap (12px superiors) isca fora de la
|
||||
// pantalla — s'hi fa clipping natural al render.
|
||||
static constexpr int SPRITE_WIDTH = 12;
|
||||
static constexpr int SPRITE_HEIGHT = 24;
|
||||
static constexpr int COLLISION_HEIGHT = 12;
|
||||
|
||||
Player(float x, float y, const Controls& controls);
|
||||
|
||||
void update(float delta_time) override;
|
||||
|
||||
private:
|
||||
Controls controls_;
|
||||
};
|
||||
Reference in new issue
Block a user