Hitbox implementadas

parent c90bd355
No preview for this file type
#include "Hitbox.h" #include "Hitbox.h"
bool Hitbox::colisiona(int x, int y){ bool Hitbox::colisiona(int x, int z){
if(x>xSuperiorDer && x<xInferiorIzq && y>ySuperiorDer && y<yInferiorIzq){ if(x<=xMaximo && x>=xMinimo && z<=zMaximo && z>=zMinimo){
std::cout<<"Esta colisionando";
return true; return true;
}else return false; }else return false;
} }
\ No newline at end of file
#ifndef HITBOX_H #ifndef HITBOX_H
#define HITBOX_H #define HITBOX_H
#include <iostream>
class Hitbox{ class Hitbox{
int xSuperiorDer;
int xInferiorIzq;
int ySuperiorDer;
int yInferiorIzq;
public: public:
bool colisiona(int x, int y); int xMaximo;
int xMinimo;
int zMaximo;
int zMinimo;
bool colisiona(int x, int z);
Hitbox(int xSD, int xII, int ySD, int yII): xSuperiorDer(xSD), xInferiorIzq(xII), ySuperiorDer(ySD), yInferiorIzq(yII){} Hitbox(int xS, int xI, int zS, int zI): xMaximo(xS), xMinimo(xI), zMaximo(zS), zMinimo(zI){}
int getxSuperiorDer(){return xSuperiorDer;}
int getySuperiorDer(){return ySuperiorDer;}
int getxInferiorIzq(){return xInferiorIzq;}
int getyInferiorIzq(){return yInferiorIzq;}
}; };
#endif // HITBOX_H #endif // HITBOX_H
...@@ -5,14 +5,15 @@ Hitbox & Objeto::getHitbox(){ ...@@ -5,14 +5,15 @@ Hitbox & Objeto::getHitbox(){
} }
void Objeto::renderizar(SDL_Renderer *renderer){ void Objeto::renderizar(SDL_Renderer *renderer){
std::cout<<estado<<std::endl;
switch (estado){ switch (estado){
normal: case normal:
sprite_normal.renderizar(renderer,x,y,w,h); sprite_normal.renderizar(renderer,x,y,w,h);
break; break;
overworld: case overworld:
sprite_overworld.renderizar(renderer,x,y,w,h); sprite_overworld.renderizar(renderer,x,y,w,h);
break; break;
overworld_highlight: case overworld_highlight:
sprite_overworld_highlight.renderizar(renderer,x,y,w,h); sprite_overworld_highlight.renderizar(renderer,x,y,w,h);
break; break;
} }
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include "Sprite.h" #include "Sprite.h"
#include "Hitbox.h" #include "Hitbox.h"
#include <iostream>
enum State { enum State {
...@@ -23,9 +24,9 @@ class Objeto { ...@@ -23,9 +24,9 @@ class Objeto {
public: public:
Hitbox &getHitbox(); Hitbox &getHitbox();
Objeto(Sprite sprite_normal_, Sprite sprite_overworld_, Sprite sprite_overworld_highlight_, Hitbox colision_, int _x, int _y, int _w, int _h): Objeto(Sprite sprite_normal_, Sprite sprite_overworld_, Sprite sprite_overworld_highlight_, Hitbox colision_, int _x, int _y, int _w, int _h, State estado_):
sprite_normal(sprite_normal_), sprite_overworld(sprite_overworld_), sprite_normal(sprite_normal_), sprite_overworld(sprite_overworld_),
sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h){} sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h), estado(estado_){}
void renderizar(SDL_Renderer *renderer); void renderizar(SDL_Renderer *renderer);
}; };
...@@ -28,11 +28,11 @@ class Personaje { ...@@ -28,11 +28,11 @@ class Personaje {
Facing estado = Frente; Facing estado = Frente;
int indice_movimiento = 0; int indice_movimiento = 0;
int x = 100;
int profundidades = 100;
public: public:
int x = 100;
int profundidades = 100;
Personaje(); Personaje();
void move(Facing direcion); void move(Facing direcion);
......
...@@ -67,13 +67,19 @@ int main(){ ...@@ -67,13 +67,19 @@ int main(){
} }
vector<Objeto*> objetos; vector<Objeto*> objetos;
vector<Hitbox*> colisiones;
Sprite Fondo1("assets/fondoHabitacion.jpg"); Sprite Fondo1("assets/fondoHabitacion.jpg");
Sprite sprPlanta("assets/planta.png"); Sprite sprPlanta("assets/planta.png");
Hitbox hitPlanta(10,50,110,100); Hitbox hitPlanta(350,80,450,120);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,10,50,100,50); Hitbox hitCama(10,50,300,300);
Hitbox hitFondo(1000000,-10000000,50,0);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal);
objetos.push_back(&Planta); objetos.push_back(&Planta);
colisiones.push_back(&hitPlanta);
colisiones.push_back(&hitCama);
colisiones.push_back(&hitFondo);
Personaje Agapito; Personaje Agapito;
...@@ -98,16 +104,15 @@ int main(){ ...@@ -98,16 +104,15 @@ int main(){
Agapito.move(Frente); Agapito.move(Frente);
break; break;
} }
for(int i=0;i<objetos.size();i++){ std::cout<<"Agapito "<<Agapito.x<<" "<<Agapito.profundidades<<std::endl;
Agapito.comprobarColision(objetos[i]->getHitbox()); for(int i=0;i<colisiones.size();i++){
Agapito.comprobarColision(*colisiones[i]);
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
exit(0); exit(0);
} }
printf("Pito\n");
} }
printf("Buclee\n");
Fondo1.renderizar(Renderer, 0, 0, 1920, 1080); Fondo1.renderizar(Renderer, 0, 0, 1920, 1080);
for(int i=0;i<objetos.size();i++){ for(int i=0;i<objetos.size();i++){
......
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