SFML レンダーウィンドウでタイルマップを描画しています。ユーザーがクリックしたタイルを特定したいのですが、解決策が見つからないようです。まず、各タイルの幅と高さは 32 です。現時点で試したこと:クリックの位置を取得します。100 の間の位置にあるタイルが見つかるまで、タイルマップをループします。したがって、(100,100) をクリックすると、タイルは (96,96) から始まるはずですが、これは機能していないようです。
関数 getTile(mousepos x,mousepos y) からのコード スニペットを次に示します。
Tile* TileMap::getTile(int x, int y)
{
Tile *t = NULL;
for(int i = 0; i < tilemap.size(); i++)
{
for(int j = 0; j < tilemap[i].size(); j++)
{
if(x > tilemap[i][j].sprite.getPosition().x
&& x < (tilemap[i][j].sprite.getPosition().x+32))
{
if(y > tilemap[i][j].sprite.getPosition().y
&& y < (tilemap[i][j].sprite.getPosition().y+32))
{
t = &tilemap[i][j];
break;
}
}
}
}
return t;
}