Hitboxes pasivas y objeto ojo

parent 0b0d157a
No preview for this file type
...@@ -29,4 +29,6 @@ public: ...@@ -29,4 +29,6 @@ public:
sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h), estado(estado_){} sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h), estado(estado_){}
void renderizar(SDL_Renderer *renderer, int tamx, int tamy); void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
void setEstado(State estado_){estado=estado_;}
}; };
...@@ -6,19 +6,25 @@ PantallaPrincipal::PantallaPrincipal() : ...@@ -6,19 +6,25 @@ PantallaPrincipal::PantallaPrincipal() :
{ {
Sprite sprPlanta("assets/planta.png"); Sprite sprPlanta("assets/planta.png");
Sprite sprInterfaz("assets/InterfazPrincipal.png"); Sprite sprInterfaz("assets/InterfazPrincipal.png");
Sprite sprOjoAbierto("assets/ojoAbierto.png");
Sprite sprOjoCerrado("assets/ojoCerrado.png");
Hitbox hitPlanta(350,80,450,120); Hitbox hitPlanta(350,80,450,120);
Hitbox hitInterfaz(1920,0,900,700); Hitbox hitInterfaz(1920,0,900,700);
Hitbox hitCama(10,50,300,300); Hitbox hitCama(10,50,300,300);
Hitbox hitFondo(1000000,-10000000,50,0); Hitbox hitFondo(1000000,-10000000,50,0);
Hitbox hitOjo(1000000,-10000000,70,0);
Objeto Ojo(sprOjoCerrado,sprOjoAbierto,sprOjoAbierto,hitOjo,1300,890,400,170,normal);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal); Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal);
Objeto Interfaz(sprInterfaz,sprInterfaz,sprInterfaz,hitInterfaz,0,870,1920,216,normal); Objeto Interfaz(sprInterfaz,sprInterfaz,sprInterfaz,hitInterfaz,0,870,1920,216,normal);
objetos.push_back(Planta);
objetos.push_back(Interfaz); objetos.push_back(Interfaz);
colisiones.push_back(hitPlanta); objetos.push_back(Ojo);
colisiones.push_back(hitCama); objetos.push_back(Planta);
colisiones.push_back(hitFondo); colisionesActivas.push_back(hitPlanta);
colisiones.push_back(hitInterfaz); colisionesActivas.push_back(hitCama);
colisionesActivas.push_back(hitFondo);
colisionesActivas.push_back(hitInterfaz);
colisionesPasivas.push_back(hitOjo);
} }
...@@ -41,8 +47,19 @@ void PantallaPrincipal::manejarEntrada(Handle &handle) { ...@@ -41,8 +47,19 @@ void PantallaPrincipal::manejarEntrada(Handle &handle) {
Agapito.move(Frente); Agapito.move(Frente);
break; break;
} }
for(int i=0;i<colisiones.size();i++){ for(int i=0;i<colisionesActivas.size();i++){
Agapito.comprobarColision(colisiones[i]); Agapito.comprobarColision(colisionesActivas[i]);
}
{
bool checkColision=false;
int i=0;
while(!checkColision && i<colisionesPasivas.size()){
checkColision=Agapito.comprobarColisionPasiva(colisionesPasivas[i]);
i++;
}
if(checkColision){
objetos[1].setEstado(overworld);
}else objetos[1].setEstado(normal);
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
class PantallaPrincipal : public Pantalla { class PantallaPrincipal : public Pantalla {
vector<Objeto> objetos; vector<Objeto> objetos;
vector<Hitbox> colisiones; vector<Hitbox> colisionesActivas;
vector<Hitbox> colisionesPasivas;
Fuente fuente1; Fuente fuente1;
Sprite Fondo1; Sprite Fondo1;
Personaje Agapito; Personaje Agapito;
......
...@@ -73,3 +73,9 @@ void Personaje::comprobarColision(Hitbox &hitbox){ ...@@ -73,3 +73,9 @@ void Personaje::comprobarColision(Hitbox &hitbox){
} }
} }
} }
bool Personaje::comprobarColisionPasiva(Hitbox &hitbox){
if(hitbox.colisiona(x,profundidades)){
return true;
}else return false;
}
...@@ -40,4 +40,6 @@ int x = -100; ...@@ -40,4 +40,6 @@ int x = -100;
void renderizar(SDL_Renderer *renderer, int tamx, int tamy); void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
void comprobarColision (Hitbox &hitbox); void comprobarColision (Hitbox &hitbox);
bool comprobarColisionPasiva (Hitbox &hitbox);
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment