Я пробовал в течение нескольких дней и тратил часы на поиски в Интернете безрезультатно. У меня проблемы с столкновением, я могу обнаружить столкновение, но моя проблема не позволяет игроку войти в плитку. Я пробовал все, что мог придумать. Я обнаружение столкновения моего tilemap с использованием 1 для твердых и 0 для пассивногоCollision C++ 2d game, предотвращающий вход игрока в плитку
for(int i = 0; i < tiles.size(); i++)
{
if(colMap[tiles[i].y][tiles[i].x] == 1)
{
myrect.setFillColor(sf::Color::Red);
collide = true;
break;
}
else
{
collide = false;
break;
}
}
Это работает нормально, мой текст игрок краснеет один раз сталкиваясь с плиткой, но я не могу понять, как предотвратить игрок, входящее что плитка для начала, моя текущая настройка я попытался отключить движение, но все, что происходит, входит в столкновение, установлено в true, а элементы управления отключены, что приводит к тому, что игрок полностью застрял.
мое текущее движение является очень основным
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
if(walking == false)
{
//colCheck();
if(!collide)
{
nextspot = x - tilesize;
move[LEFT] = true;
walking = true;
}else
{
std::cout << "Collsion!" << std::endl;
}
}
}
Любая помощь очень ценится.
Если движение приводит к столкновению, восстановите положение игроков до того, что было до столкновения. Или, * если * движение приведет к столкновению, не перемещайте игрока. – hyde
Это было бы лучше подходит для обмена играми (dot). – Grey
Просто из любопытства, как вы рисуете свою карту? Какая ОС? –