初めてのアイソメトリック ゲームで問題が発生しました。プレイヤーが壁の端に近づくことができるようにする方法がわかりません。この瞬間、プレイヤーは緑のエリアを動き回るかもしれません。
私の地図:
int[,] map = new int[,]
{
{1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1}
};
変数:
int TileWidth = 50;
int TileHeight = 50;
int posX = 2; // map X position
int posY = 2; // map Y position
float playerX = 2 * 50; // player X position
float playerY = 2 * 50; // player Y position
壁を検出:
public bool detectSolidTile(int x, int y)
{
if (map[y, x] == 1) return true; else return false;
}
動き:
posX = (int)(Math.Floor((playerX) / 50));
posY = (int)(Math.Floor(playerY / 50));
(...)
if (slide == 1 && !detectSolidTile(posX + 1, posY))
{
playerX++;
}
if (slide == 2 && !detectSolidTile(posX - 1, posY))
{
playerX--;
}
画像 -> http://s16.postimg.org/cxkfomemd/tiles.jpg
壁から壁へと移動できるようにするには、何を改善する必要がありますか?
敬具、クルジシェク