Arreglo de hitbox.

parent 8e1513af
#ifndef HITBOX_H
#define HITBOX_H
class Hitbox{
int xSuperiorDer;
int xInferiorIzq;
int ySuperiorDer;
int yInferiorIzq;
public:
bool colisiona(int x, int y);
Hitbox(int xSD, int xII, int ySD, int yII): xSuperiorDer(xSD), xInferiorIzq(xII), ySuperiorDer(ySD), yInferiorIzq(yII){}
......@@ -12,3 +16,5 @@ class Hitbox{
int getxInferiorIzq(){return xInferiorIzq;}
int getyInferiorIzq(){return yInferiorIzq;}
};
#endif // HITBOX_H
#include "Objeto.h"
Hitbox & Objeto::getHitbox(){
return colisiones;
return colision;
}
void Objeto::renderizar(SDL_Renderer *renderer){
switch (Estado){
switch (estado){
normal:
normal.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
//normal.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
// colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break;
overworld:
overworld.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
//overworld.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
// colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break;
overworld_highlight:
overworld_highlight.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
//overworld_highlight.renderizar(renderer, colision.getxSuperiorDer(), colision.getySuperiorDer(),
// colision.getxInferiorIzq()-colision.getxSuperiorDer(),colision.getyInferiorIzq()-colision.getySuperiorDer());
break;
}
}
#pragma once
#include "Sprite.h"
#include "Hitbox.h"
......@@ -8,17 +10,17 @@ enum State {
overworld_highlight = 2
};
class Objeto {
Sprite normal;
Sprite overworld;
Sprite overworld_highlight;
Sprite sprite_normal;
Sprite sprite_overworld;
Sprite sprite_overworld_highlight;
Hitbox colision;
State estado=normal;
public:
Hitbox &getHitbox();
Objeto(Sprite normal_, Sprite overworld_, Sprite overworld_highlight_, Hitbox colision_): normal(normal_), overworld(overworld_),
overworld_highlight(overworld_highlight_), colision(colision_){}
Objeto(Sprite sprite_normal_, Sprite sprite_overworld_, Sprite sprite_overworld_highlight_, Hitbox colision_): sprite_normal(sprite_normal_), sprite_overworld(sprite_overworld_),
sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_){}
void 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);
}
void Personaje::comprobarColision(Hitbox *hitbox){
if(hitbox->colisiona(x, profundidades)){
void Personaje::comprobarColision(Hitbox &hitbox){
if(hitbox.colisiona(x, profundidades)){
switch (estado) {
case Frente:
profundidades -= 5;
......
......@@ -39,5 +39,5 @@ public:
void renderizar(SDL_Renderer *renderer);
void comprobarColision (Hitbox *hitbox);
void comprobarColision (Hitbox &hitbox);
};
......@@ -66,14 +66,14 @@ int main(){
}
vector<*Objeto> objetos;
vector<Objeto*> objetos;
Sprite Fondo1("assets/fondoHabitacion.jpg");
Sprite sprPlanta("assets/planta.png");
Hitbox hitPlanta(10,50,110,100);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta);
objetos.add(&Planta);
objetos.push_back(&Planta);
Personaje Agapito;
......@@ -99,7 +99,7 @@ int main(){
break;
}
for(int i=0;i<objetos.size();i++){
Agapito.comprobarColision(objetos[i]->getColision());
Agapito.comprobarColision(objetos[i]->getHitbox());
}
break;
case SDL_QUIT:
......
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
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