moguda la fisica del jugador a un fitxer yamal animal

This commit is contained in:
2025-11-26 13:22:34 +01:00
parent 254ef3d11c
commit 61c6b9087c
4 changed files with 103 additions and 28 deletions

View File

@@ -17,6 +17,10 @@
class Player {
public:
// --- Constantes de tamaño ---
static constexpr int WIDTH = 8; // Ancho del jugador en pixels
static constexpr int HEIGHT = 16; // Alto del jugador en pixels
// --- Enums y Structs ---
enum class State {
ON_GROUND, // En suelo plano o conveyor belt
@@ -66,6 +70,7 @@ class Player {
[[nodiscard]] auto isAlive() const -> bool { return is_alive_; } // Comprueba si el jugador esta vivo
void setPaused(bool value) { is_paused_ = value; } // Pone el jugador en modo pausa
auto handleKillingTiles() -> bool; // Comprueba que el jugador no toque ningun tile de los que matan
void reloadPhysics(); // Recarga la configuración de física desde el archivo YAML
#ifdef _DEBUG
// --- Funciones de debug ---
@@ -74,20 +79,18 @@ class Player {
#endif
private:
// --- Constantes de tamaño ---
static constexpr int WIDTH = 8; // Ancho del jugador en pixels
static constexpr int HEIGHT = 16; // Alto del jugador en pixels
// --- Configuración de física ---
struct PhysicsConfig {
float walk_velocity = 50.0F; // Velocidad al caminar (inmediata) en pixels/segundo
float run_velocity = 80.0F; // Velocidad al correr en pixels/segundo
float time_to_run = 0.8F; // Segundos caminando antes de empezar a correr
float run_acceleration = 150.0F; // Aceleración de caminar a correr en pixels/segundo²
float horizontal_deceleration = 250.0F; // Desaceleración al soltar (momentum) en pixels/segundo²
float jump_velocity = -160.0F; // Impulso de salto en pixels/segundo (más fuerte, menos floaty)
float gravity_force = 280.0F; // Gravedad en pixels/segundo² (más alta, menos floaty)
};
// --- Constantes de movimiento horizontal ---
static constexpr float WALK_VELOCITY = 50.0F; // Velocidad al caminar (inmediata) en pixels/segundo
static constexpr float RUN_VELOCITY = 80.0F; // Velocidad al correr en pixels/segundo
static constexpr float TIME_TO_RUN = 0.8F; // Segundos caminando antes de empezar a correr
static constexpr float RUN_ACCELERATION = 150.0F; // Aceleración de caminar a correr en pixels/segundo²
static constexpr float HORIZONTAL_DECELERATION = 250.0F; // Desaceleración al soltar (momentum) en pixels/segundo²
// --- Constantes de salto ---
static constexpr float JUMP_VELOCITY = -160.0F; // Impulso de salto en pixels/segundo (más fuerte, menos floaty)
static constexpr float GRAVITY_FORCE = 280.0F; // Gravedad en pixels/segundo² (más alta, menos floaty)
PhysicsConfig physics_; // Configuración de física cargada desde YAML
// --- Objetos y punteros ---
std::shared_ptr<Room> room_; // Objeto encargado de gestionar cada habitación del juego
@@ -139,6 +142,7 @@ class Player {
// --- Funciones de inicialización ---
void initSprite(const std::string& animations_path); // Inicializa el sprite del jugador
void applySpawnValues(const SpawnData& spawn); // Aplica los valores de spawn al jugador
void loadPhysicsConfig(const std::string& path); // Carga la configuración de física desde YAML
// --- Funciones de procesamiento de entrada ---
void handleInput(); // Comprueba las entradas y modifica variables