我尝试了几天,在网上搜索了数小时,但无济于事。我在处理碰撞时遇到了问题,我可以检测到碰撞,但我的问题是防止玩家进入这个方格。我已经尽我所能尝试过所有的方法。我使用1代表实心和0代表被动来检测我的瓦片图的碰撞。
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;
}
}
这个可以,我的文本播放器与瓷砖碰撞后会变成红色,但我无法弄清如何防止玩家进入该瓷砖。我尝试禁用移动,但结果是玩家仍然进入了碰撞,并且控件被禁用,导致玩家完全卡住。
我的当前移动非常基础。
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;
}
}
}
Any help greatly appreciated.
for
循环没有意义;你开始检查每个瓷砖,然后在检查第一个瓷砖后中止。我不明白它怎么能工作,除非tiles[0]
恰好与所询问的瓷砖颜色相同。而且你的“当前移动”似乎没有涉及更改x
。 - Beta