Colisiones básicas terminadas
This commit is contained in:
@@ -11,11 +11,11 @@
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,74,74,74,0,0,0,0,
|
||||
74,74,74,75,75,74,74,68,68,68,68,68,74,74,78,74,68,74,68,68
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,65,0,0,0,0,
|
||||
65,65,0,0,65,65,0,0,0,0,0,0,0,0,0,68,0,0,0,0,
|
||||
0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,49,0,0,0,0,0,47,0,0,0,0,0,77,74,76,0,0,0,0,
|
||||
74,74,74,75,75,74,74,68,68,65,68,68,74,74,78,74,68,74,68,68
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
||||
|
||||
@@ -186,11 +186,11 @@ void Map::fillMapTexture()
|
||||
{
|
||||
SDL_SetRenderTarget(renderer, map_texture);
|
||||
SDL_SetTextureBlendMode(map_texture, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
|
||||
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0xFF);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
// Dibuja la textura de fondo
|
||||
SDL_Rect clip = {0, 0, 320, 240 - 32};
|
||||
SDL_Rect clip = {0, 0, 320, 208};
|
||||
texture_bg->render(renderer, 0, 0, &clip);
|
||||
|
||||
// Dibuja el mapeado de tiles
|
||||
@@ -209,6 +209,22 @@ void Map::fillMapTexture()
|
||||
texture_tile->render(renderer, x * tile_size, y * tile_size, &clip);
|
||||
}
|
||||
|
||||
// Dibuja el degradado del marcador
|
||||
int color = 105;
|
||||
for (int i = 208; i < 240; i++)
|
||||
{
|
||||
SDL_SetRenderDrawColor(renderer, 0x69, color, 0x69, 0xFF);
|
||||
SDL_RenderDrawLine(renderer, 0, i, 320, i);
|
||||
color--;
|
||||
}
|
||||
|
||||
// Dibuja el marco del marcador
|
||||
SDL_SetRenderDrawColor(renderer, 85, 50, 85, 0xFF);
|
||||
SDL_Rect rect = {0, 208, 320, 32};
|
||||
SDL_RenderDrawRect(renderer, &rect);
|
||||
rect = {1, 209, 318, 30};
|
||||
SDL_RenderDrawRect(renderer, &rect);
|
||||
|
||||
SDL_SetRenderTarget(renderer, nullptr);
|
||||
}
|
||||
|
||||
|
||||
@@ -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