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:
parent
251d7f6661
commit
35a527101b
1
extern/libpng
vendored
Submodule
1
extern/libpng
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 71b9b5e16ef751d973a3935284382bc344ff9941
|
||||||
1
extern/zlib
vendored
Submodule
1
extern/zlib
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851
|
||||||
@ -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;
|
||||||
|
|||||||
17
src/Game.cpp
17
src/Game.cpp
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user