El salto ya hace el arco y luego cae
This commit is contained in:
@@ -187,9 +187,6 @@ bool Game::changeRoom(std::string file)
|
|||||||
// Crea un objeto habitación nuevo a partir del fichero
|
// Crea un objeto habitación nuevo a partir del fichero
|
||||||
mRoom = new Room(mAsset->get(file), mRenderer, mAsset);
|
mRoom = new Room(mAsset->get(file), mRenderer, mAsset);
|
||||||
|
|
||||||
// Comunica al jugador la nueva referencia para la habitación
|
|
||||||
mPlayer->setRoom(mRoom);
|
|
||||||
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +213,7 @@ void Game::checkPlayerOnFloor()
|
|||||||
|
|
||||||
// *** HAY UN POSIBLE PROBLEMA y es que caiga muy rapido y viaje a mas de un pixel de velocidad,
|
// *** HAY UN POSIBLE PROBLEMA y es que caiga muy rapido y viaje a mas de un pixel de velocidad,
|
||||||
// con lo que se saltaria la comprobación
|
// con lo que se saltaria la comprobación
|
||||||
|
|
||||||
if ((mPlayer->getVelY() >= 0) && ((int)mPlayer->getLeftFoot().y % 8 == 0))
|
if ((mPlayer->getVelY() >= 0) && ((int)mPlayer->getLeftFoot().y % 8 == 0))
|
||||||
{ // Comprueba ambos pies
|
{ // Comprueba ambos pies
|
||||||
bool test = false;
|
bool test = false;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ Player::Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Inp
|
|||||||
asset = _asset;
|
asset = _asset;
|
||||||
renderer = _renderer;
|
renderer = _renderer;
|
||||||
input = _input;
|
input = _input;
|
||||||
room = _room;
|
|
||||||
|
|
||||||
// Crea objetos
|
// Crea objetos
|
||||||
texture = new LTexture();
|
texture = new LTexture();
|
||||||
@@ -24,6 +23,8 @@ Player::Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Inp
|
|||||||
color = stringToColor("white");
|
color = stringToColor("white");
|
||||||
onBorder = false;
|
onBorder = false;
|
||||||
border = BORDER_TOP;
|
border = BORDER_TOP;
|
||||||
|
|
||||||
|
jump_ini = 0;
|
||||||
status = STATUS_STANDING;
|
status = STATUS_STANDING;
|
||||||
|
|
||||||
sprite->setPosX(2 * 8);
|
sprite->setPosX(2 * 8);
|
||||||
@@ -76,6 +77,7 @@ void Player::update()
|
|||||||
move(); // Recalcula la posición del jugador y su animación
|
move(); // Recalcula la posición del jugador y su animación
|
||||||
checkBorders(); // Comprueba si está situado en alguno de los cuatro bordes de la habitación
|
checkBorders(); // Comprueba si está situado en alguno de los cuatro bordes de la habitación
|
||||||
applyGravity(); // Aplica gravedad al jugador
|
applyGravity(); // Aplica gravedad al jugador
|
||||||
|
checkJump(); // Comprueba si ha finalizado el salto
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba las entradas y modifica variables
|
// Comprueba las entradas y modifica variables
|
||||||
@@ -167,12 +169,6 @@ void Player::switchBorders()
|
|||||||
onBorder = false;
|
onBorder = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Establece el valor de la variable
|
|
||||||
void Player::setRoom(Room *_room)
|
|
||||||
{
|
|
||||||
room = _room;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Obtiene el valor del pixel inferior izquierdo del jugador
|
// Obtiene el valor del pixel inferior izquierdo del jugador
|
||||||
SDL_Point Player::getLeftFoot()
|
SDL_Point Player::getLeftFoot()
|
||||||
{
|
{
|
||||||
@@ -195,6 +191,7 @@ void Player::setStatus(int value)
|
|||||||
{
|
{
|
||||||
status = STATUS_JUMPING;
|
status = STATUS_JUMPING;
|
||||||
sprite->setVelY(-MAX_VY);
|
sprite->setVelY(-MAX_VY);
|
||||||
|
jump_ini = sprite->getPosY();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modifica el estado a 'cayendo'
|
// Modifica el estado a 'cayendo'
|
||||||
@@ -234,7 +231,6 @@ void Player::applyGravity()
|
|||||||
if (sprite->getVelY() > MAX_VY)
|
if (sprite->getVelY() > MAX_VY)
|
||||||
{
|
{
|
||||||
sprite->setVelY(MAX_VY);
|
sprite->setVelY(MAX_VY);
|
||||||
// status = STATUS_FALLING;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,3 +264,14 @@ void Player::move()
|
|||||||
sprite->animate(0);
|
sprite->animate(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Comprueba si ha finalizado el salto
|
||||||
|
void Player::checkJump()
|
||||||
|
{
|
||||||
|
if (status == STATUS_JUMPING)
|
||||||
|
if (sprite->getVelY() > 0)
|
||||||
|
if (sprite->getPosY() > jump_ini)
|
||||||
|
{
|
||||||
|
status = STATUS_FALLING;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,7 +26,6 @@ private:
|
|||||||
LTexture *texture; // Textura con los graficos del enemigo
|
LTexture *texture; // Textura con los graficos del enemigo
|
||||||
AnimatedSprite *sprite; // Sprite del enemigo
|
AnimatedSprite *sprite; // Sprite del enemigo
|
||||||
Input *input; // Objeto para gestionar la entrada
|
Input *input; // Objeto para gestionar la entrada
|
||||||
Room *room; // Objeto con el mapa del juego
|
|
||||||
|
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
@@ -54,7 +53,11 @@ private:
|
|||||||
// Recalcula la posición del jugador y su animación
|
// Recalcula la posición del jugador y su animación
|
||||||
void move();
|
void move();
|
||||||
|
|
||||||
|
// Comprueba si ha finalizado el salto
|
||||||
|
void checkJump();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
int jump_ini; // Valor del eje Y en el que se inicia el salto
|
||||||
int status; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
int status; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
@@ -78,9 +81,6 @@ public:
|
|||||||
// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla
|
// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla
|
||||||
void switchBorders();
|
void switchBorders();
|
||||||
|
|
||||||
// Establece el valor de la variable
|
|
||||||
void setRoom(Room *_room);
|
|
||||||
|
|
||||||
// Obtiene el valor del pixel inferior izquierdo del jugador
|
// Obtiene el valor del pixel inferior izquierdo del jugador
|
||||||
SDL_Point getLeftFoot();
|
SDL_Point getLeftFoot();
|
||||||
|
|
||||||
|
|||||||
5
todo.txt
5
todo.txt
@@ -1,3 +1,4 @@
|
|||||||
[ ] Hacer que deje de poder moverse tras el salto al alcanzar la misma posicion en altura que tenia cuando saltó
|
[x] Hacer que deje de poder moverse tras el salto al alcanzar la misma posicion en altura que tenia cuando saltó
|
||||||
[ ] Leer los mapas directamente del archivo tmx
|
[ ] Arreglar que no atraviese tiles atravaseables al caer muy rapido
|
||||||
|
[x] Leer los mapas directamente del archivo tmx
|
||||||
[ ] Crear la clase item
|
[ ] Crear la clase item
|
||||||
Reference in New Issue
Block a user