Working on Collisions
This commit is contained in:
@ -11,15 +11,14 @@
|
||||
bool Collision::AABB(const SDL_Rect& recA, const SDL_Rect& recB)
|
||||
{
|
||||
if(
|
||||
recA.x + recA.w >= recB.x &&
|
||||
recB.x + recB.w >= recA.x &&
|
||||
recA.y + recA.h >= recB.y &&
|
||||
recB.y + recB.h >= recA.y
|
||||
recA.x + recA.w > recB.x &&
|
||||
recB.x + recB.w > recA.x &&
|
||||
recA.y + recA.h > recB.y &&
|
||||
recB.y + recB.h > recA.y
|
||||
)
|
||||
{
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -28,6 +27,10 @@ bool Collision::AABB(const ColliderComponent& colA, const ColliderComponent& col
|
||||
if(AABB(colA.collider, colB.collider))
|
||||
{
|
||||
// std::cout << colA.tag << " hit: " << colB.tag << std::endl;
|
||||
// if(recA.x + recA.w >= recB.x) { printf("LeftCollision"); }
|
||||
// if(recB.x + recB.w >= recA.x) { printf("RightCollision"); }
|
||||
// if(recA.y + recA.h >= recB.y) { printf("TopCollision"); }
|
||||
// if(recB.y + recB.h >= recA.y) { printf("BottomCollision"); }
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -9,6 +9,7 @@
|
||||
#define SRC_COLLISION_H_
|
||||
|
||||
#include <SDL2/SDL.h>
|
||||
// #include "Vector2D.h"
|
||||
|
||||
class ColliderComponent;
|
||||
|
||||
@ -17,6 +18,7 @@ class Collision
|
||||
public:
|
||||
static bool AABB(const SDL_Rect& recA, const SDL_Rect& recB);
|
||||
static bool AABB(const ColliderComponent& colA, const ColliderComponent& colB);
|
||||
// void showColType();
|
||||
};
|
||||
|
||||
|
||||
|
@ -121,7 +121,8 @@ void Game::init(const char *title, int width, int height, bool fullscreen, int g
|
||||
|
||||
map = new Map("terrain",globalScale,16);
|
||||
|
||||
std::string myText = "Find lost puppies!\nThey need your help!";
|
||||
// std::string myText = "Find lost puppies!\nThey need your help!";
|
||||
std::string myText = "Press U to Start";
|
||||
|
||||
text = new UIText(myText, "font", 0, 0, 8, 12, globalScale);
|
||||
text->ParseString(myText, 12, 22, globalScale, "text");
|
||||
@ -230,7 +231,9 @@ void Game::update()
|
||||
SDL_Rect cCol = c->getComponent<ColliderComponent>().collider;
|
||||
if(Collision::AABB(cCol, playerCol))
|
||||
{
|
||||
// printf("Collision detected!\nplayerIsGrounded:%d if 0: idle plays\n",playerIsGrounded);
|
||||
// printDebug("Collision Detected");
|
||||
// printf("Collision Stats:\nPlayer Center\nx: %d\ny: %d\nObjectCollider Center\nx: %d\ny: %d\n",(playerCol.x+playerCol.w/2)/gScale,(playerCol.y+playerCol.h/2)/gScale,(cCol.x+cCol.w/2)/gScale,(cCol.y+cCol.h/2)/gScale);
|
||||
// printDebug("");
|
||||
if(!playerIsGrounded){
|
||||
player.getComponent<SpriteComponent>().Play("Idle");
|
||||
}
|
||||
@ -324,10 +327,16 @@ void Game::clean()
|
||||
printf("Game Cleaned\n");
|
||||
}
|
||||
|
||||
void Game::printDebug(char* debugInfo)
|
||||
std::string previousMessage = "";
|
||||
|
||||
void Game::printDebug(std::string debugInfo)
|
||||
{
|
||||
printf("%s",debugInfo);
|
||||
printf("\n");
|
||||
if (previousMessage != debugInfo)
|
||||
{
|
||||
std::cout << debugInfo;
|
||||
printf("\n");
|
||||
}
|
||||
previousMessage = debugInfo;
|
||||
}
|
||||
|
||||
void Game::drawLine(Vector2D srcpt, Vector2D destpt, int red, int green, int blue)
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
void update();
|
||||
void render();
|
||||
void clean();
|
||||
void printDebug(char* debugInfo);
|
||||
void printDebug(std::string debugInfo);
|
||||
static void drawLine(Vector2D srcpt, Vector2D destpt, int red, int green, int blue);
|
||||
bool running() { return isRunning; }
|
||||
// static void AddTile(int srcX, int srcY, int xpos, int ypos);
|
||||
|
Reference in New Issue
Block a user