私の現在の方法は、私の配列をチェックして、私が得るさまざまな値ごとにケースを作ることです。 1つまたは2つの衝突可能なタイルを持つ小さなマップでも機能しますが、100を超える場合は100以上のケースを作成する必要があり、プレーヤーが別のマップに入ると非常に非効率なケースを増やす必要があります。私はプレーヤーとのタイルマップの衝突を行うことができるより良い方法はありますか?例えばSFMLのタイルマップとの衝突
int x = player.getPlayerPositionX()/map.getTileWidth();
int y = player.getPlayerPositionY()/map.getTileHeight();
switch (player.getDirection())
{
case 3:
if (map.data[x + y * map.getMapWidth()] == 1)
{
player.moveRect(1.0f, 0);
}
break;
case 4:
x = (player.getPlayerPositionX() + 20)/map.getTileWidth();
if (map.data[x + y * map.getMapWidth()] == 1)
{
player.moveRect(-1.0f, 0);
}
break;
}
正確には "ケースを作る?現在のアプローチを示すためにいくつかのコードを提供してください。 – Omni
タイルマップはどのように保存しますか?現在の実装を示すいくつかのコードを与えてください –
@Omniは例を示すように編集しました。 私のタイルマップをベクトルに格納します – Tomm