Arreglo de hitbox.

parent 8e1513af
#ifndef HITBOX_H
#define HITBOX_H
class Hitbox{ class Hitbox{
int xSuperiorDer; int xSuperiorDer;
int xInferiorIzq; int xInferiorIzq;
int ySuperiorDer; int ySuperiorDer;
int yInferiorIzq; int yInferiorIzq;
public:
bool colisiona(int x, int y); bool colisiona(int x, int y);
Hitbox(int xSD, int xII, int ySD, int yII): xSuperiorDer(xSD), xInferiorIzq(xII), ySuperiorDer(ySD), yInferiorIzq(yII){} Hitbox(int xSD, int xII, int ySD, int yII): xSuperiorDer(xSD), xInferiorIzq(xII), ySuperiorDer(ySD), yInferiorIzq(yII){}
...@@ -11,4 +15,6 @@ class Hitbox{ ...@@ -11,4 +15,6 @@ class Hitbox{
int getySuperiorDer(){return ySuperiorDer;} int getySuperiorDer(){return ySuperiorDer;}
int getxInferiorIzq(){return xInferiorIzq;} int getxInferiorIzq(){return xInferiorIzq;}
int getyInferiorIzq(){return yInferiorIzq;} int getyInferiorIzq(){return yInferiorIzq;}
}; };
\ No newline at end of file
#endif // HITBOX_H
#include "Objeto.h" #include "Objeto.h"
Hitbox & Objeto::getHitbox(){ Hitbox & Objeto::getHitbox(){
return colisiones; return colision;
} }
void Objeto::renderizar(SDL_Renderer *renderer){ void Objeto::renderizar(SDL_Renderer *renderer){
switch (Estado){ switch (estado){
normal: normal:
normal.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(), //normal.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer()); // colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break; break;
overworld: overworld:
overworld.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(), //overworld.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer()); // colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break; break;
overworld_highlight: overworld_highlight:
overworld_highlight.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(), //overworld_highlight.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer()); // colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break; break;
} }
} }
\ No newline at end of file
#pragma once
#include "Sprite.h" #include "Sprite.h"
#include "Hitbox.h" #include "Hitbox.h"
...@@ -8,17 +10,17 @@ enum State { ...@@ -8,17 +10,17 @@ enum State {
overworld_highlight = 2 overworld_highlight = 2
}; };
class Objeto { class Objeto {
Sprite normal; Sprite sprite_normal;
Sprite overworld; Sprite sprite_overworld;
Sprite overworld_highlight; Sprite sprite_overworld_highlight;
Hitbox colision; Hitbox colision;
State estado=normal; State estado=normal;
public:
Hitbox &getHitbox(); Hitbox &getHitbox();
Objeto(Sprite normal_, Sprite overworld_, Sprite overworld_highlight_, Hitbox colision_): normal(normal_), overworld(overworld_), Objeto(Sprite sprite_normal_, Sprite sprite_overworld_, Sprite sprite_overworld_highlight_, Hitbox colision_): sprite_normal(sprite_normal_), sprite_overworld(sprite_overworld_),
overworld_highlight(overworld_highlight_), colision(colision_){} sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_){}
void renderizar(SDL_Renderer *renderer); void renderizar(SDL_Renderer *renderer);
}; };
\ No newline at end of file
...@@ -55,8 +55,8 @@ void Personaje::renderizar(SDL_Renderer *renderer) { ...@@ -55,8 +55,8 @@ void Personaje::renderizar(SDL_Renderer *renderer) {
movimientos[estado][indice_movimiento].renderizar(renderer, x, 100, profundidades, profundidades, true); movimientos[estado][indice_movimiento].renderizar(renderer, x, 100, profundidades, profundidades, true);
} }
void Personaje::comprobarColision(Hitbox *hitbox){ void Personaje::comprobarColision(Hitbox &hitbox){
if(hitbox->colisiona(x, profundidades)){ if(hitbox.colisiona(x, profundidades)){
switch (estado) { switch (estado) {
case Frente: case Frente:
profundidades -= 5; profundidades -= 5;
...@@ -72,4 +72,4 @@ void Personaje::comprobarColision(Hitbox *hitbox){ ...@@ -72,4 +72,4 @@ void Personaje::comprobarColision(Hitbox *hitbox){
break; break;
} }
} }
} }
\ No newline at end of file
...@@ -39,5 +39,5 @@ public: ...@@ -39,5 +39,5 @@ public:
void renderizar(SDL_Renderer *renderer); void renderizar(SDL_Renderer *renderer);
void comprobarColision (Hitbox *hitbox); void comprobarColision (Hitbox &hitbox);
}; };
\ No newline at end of file
...@@ -66,14 +66,14 @@ int main(){ ...@@ -66,14 +66,14 @@ int main(){
} }
vector<*Objeto> objetos; vector<Objeto*> objetos;
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(10,50,110,100);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta); Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta);
objetos.add(&Planta); objetos.push_back(&Planta);
Personaje Agapito; Personaje Agapito;
...@@ -99,7 +99,7 @@ int main(){ ...@@ -99,7 +99,7 @@ int main(){
break; break;
} }
for(int i=0;i<objetos.size();i++){ for(int i=0;i<objetos.size();i++){
Agapito.comprobarColision(objetos[i]->getColision()); Agapito.comprobarColision(objetos[i]->getHitbox());
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
......
CC = g++ CC = g++
CodeFiles = main.cpp Personaje.cpp Sprite.cpp HeaderFiles = Personaje.h Sprite.h Objeto.h Hitbox.h
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp
Executable: $(CodeFiles) Executable: $(CodeFiles) $(HeaderFiles)
$(CC) $(CodeFiles) -w -lSDL2 -lSDL2_image -lSDL2_ttf -o Executable $(CC) $(CodeFiles) -w -lSDL2 -lSDL2_image -lSDL2_ttf -o Executable
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