У меня проблема с моей первой изометрической игрой. Я не знаю, как сделать, чтобы мой игрок мог приблизиться к краю стены. В этот момент игрок может двигаться в зеленой зоне.Первая изометрическая игра
Моя карта:
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
Detect стены:
public bool detectSolidTile(int x, int y)
{
if (map[y, x] == 1) return true; else return false;
}
Movemet:
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
Что мне нужно улучшить, чтобы иметь возможность передвигаться от стены до стены?
наилучшими пожеланиями, Krzysiek
Изменение 1 до 0 помогло, но только правая стена. Игрок двигаться только по зеленой зоне :( IMG http://i.stack.imgur.com/k6xG8.jpg редактировать: я сделал: DI изменить если (слайд == 2 && detectSolidTile (PosX - 1, posY)) if (slide == 2 && detectSolidTile (posX, posY)) – Krzysiek
Используя тот же процесс для y, вы можете перемещать его вверх и вниз. –