Colisiones básicas terminadas
This commit is contained in:
@@ -17,7 +17,7 @@ Player::Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map)
|
||||
|
||||
sprite = new AnimatedSprite(texture, renderer, asset->get("player.ani"));
|
||||
|
||||
x = 16;
|
||||
x = 3 * 16;
|
||||
y = 40;
|
||||
vx = 0;
|
||||
vy = 0;
|
||||
@@ -120,6 +120,8 @@ bool Player::checkMapCollisions()
|
||||
{
|
||||
bool collision = false;
|
||||
|
||||
updateColliders();
|
||||
|
||||
for (auto c : collider)
|
||||
{
|
||||
collision |= (map->getTile(c) == wall);
|
||||
@@ -133,18 +135,32 @@ void Player::move()
|
||||
{
|
||||
const float old_x = x;
|
||||
x += vx;
|
||||
updateColliders();
|
||||
if (checkMapCollisions())
|
||||
{
|
||||
x = old_x;
|
||||
}
|
||||
|
||||
const float old_y = y;
|
||||
// const float old_y = y;
|
||||
y += vy;
|
||||
updateColliders();
|
||||
if (checkMapCollisions())
|
||||
{
|
||||
y = old_y;
|
||||
// y = old_y;
|
||||
if (vy > 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
y--;
|
||||
} while (checkMapCollisions());
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
y++;
|
||||
} while (checkMapCollisions());
|
||||
}
|
||||
|
||||
vy = 0;
|
||||
}
|
||||
|
||||
sprite->setPosX(x);
|
||||
|
||||
Reference in New Issue
Block a user