0
0
mirror of https://github.com/Nimac0/SDL_Minigame synced 2026-01-12 21:23:41 +00:00

left/right sliding collision possible now

This commit is contained in:
ineslelin 2024-01-27 17:29:14 +01:00
parent 251d7f6661
commit 35a527101b
4 changed files with 21 additions and 2 deletions

1
extern/libpng vendored Submodule

@ -0,0 +1 @@
Subproject commit 71b9b5e16ef751d973a3935284382bc344ff9941

1
extern/zlib vendored Submodule

@ -0,0 +1 @@
Subproject commit 09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851

View File

@ -4,6 +4,8 @@
#include <SDL_image.h> #include <SDL_image.h>
#include <vector> #include <vector>
#include "Vector2D.h"
class AssetManager; class AssetManager;
class ColliderComponent; class ColliderComponent;
@ -29,6 +31,8 @@ public:
bool getWinner(); bool getWinner();
void handleCollision(Vector2D& characterPos, SDL_Rect& characterCollider, SDL_Rect& componentCollider);
private: private:
int counter = 0; int counter = 0;
bool isRunning = false; bool isRunning = false;

View File

@ -158,11 +158,11 @@ void Game::update()
{ {
if (SDL_HasIntersection(&player.getComponent<ColliderComponent>().collider, &cc->collider) && strcmp(cc->tag, "player") && cc->hasCollision) if (SDL_HasIntersection(&player.getComponent<ColliderComponent>().collider, &cc->collider) && strcmp(cc->tag, "player") && cc->hasCollision)
{ {
player.getComponent<TransformComponent>().position = playerPos; handleCollision(player.getComponent<TransformComponent>().position, player.getComponent<ColliderComponent>().collider, cc->collider);
} }
if (SDL_HasIntersection(&enemy.getComponent<ColliderComponent>().collider, &cc->collider) && strcmp(cc->tag, "enemy") && cc->hasCollision) if (SDL_HasIntersection(&enemy.getComponent<ColliderComponent>().collider, &cc->collider) && strcmp(cc->tag, "enemy") && cc->hasCollision)
{ {
enemy.getComponent<TransformComponent>().position = enemyPos; handleCollision(enemy.getComponent<TransformComponent>().position, enemy.getComponent<ColliderComponent>().collider, cc->collider);
} }
} }
@ -262,3 +262,16 @@ bool Game::running() const
bool Game::getWinner() { bool Game::getWinner() {
return this->winner; return this->winner;
} }
void Game::handleCollision(Vector2D& characterPos, SDL_Rect& characterCollider, SDL_Rect& componentCollider)
{
// collision to right of character
if (characterPos.x < componentCollider.x)
{
characterPos.x = componentCollider.x - characterCollider.w;
}
else // collision to left of character
{
characterPos.x = componentCollider.x + componentCollider.w;
}
}