Hitbox implementadas

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