Я пытаюсь сделать игру для строителей, где вы можете строить везде, где нет построек и касаться земли. Вот мой код
private void Update()
{
if (buildMode)
{
playerScript.enabled = false;
Vector3 point = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButtonDown(0))
{
buildOverlay.ClearAllTiles();
Vector3Int selectedTile = buildOverlay.WorldToCell(point);
selectedTile.z = 0;
if (Vector3.Distance(GameObject.Find("Player").transform.position, selectedTile) < buildDistance)
{
//BoundsInt bounds = collidableTilemap.cellBounds;
//TileBase[] allTiles = collidableTilemap.GetTilesBlock(bounds);
//for (int x = 0; x < bounds.size.x; x++)
//{
// for (int y = 0; y < bounds.size.y; y++)
// {
// TileBase tile = allTiles[x + y * bounds.size.x];
// Debug.Log(collidableTilemap.HasTile(new Vector3Int(x, y, 0)));
// if (collidableTilemap.HasTile(new Vector3Int(x, y, 0)))
// {
// buildOverlay.SetTile(selectedTile, notplaceable);
// }
// else
// {
// buildOverlay.SetTile(selectedTile, placeable);
// }
// }
//}
selectedTile.z = 0;
Debug.Log(selectedTile);
Debug.Log(collidableTilemap.HasTile(selectedTile));
if (!collidableTilemap.HasTile(selectedTile))
{
buildOverlay.SetTile(selectedTile, placeable);
}
else
{
buildOverlay.SetTile(selectedTile, notplaceable);
}
}
}
else
{
playerScript.enabled = true;
}
}
}
Пока этот код отключает возможность перемещаться и проверять перекрывающийся тайл. В настоящее время у меня переменная buildDistance
установлена в бесконечность, так что это не проблема.
Вот некоторые изображения:
Unity считает, что первого слоя там нет. Вот вид сцены, чтобы доказать, что эти блоки находятся в одной и той же карте тайлов:
Этот код должен видеть, существует ли тайл в координатах где игрок хочет разместить. Работает нормально, за исключением первого слоя. Пожалуйста, помогите!
Я довольно новичок в Unity, поэтому не обращайте внимания на мои ошибки нубов. Спасибо!
[EDIT]: Я немного изменил свою местность и понял пару новых вещей:
Этот блок красный
Этот блок зеленый.
Я не могу построить нигде в этом ряду, кроме случаев, когда камень заканчивается:
Я могу построить здесь:
ЧТО ПРОИСХОДИТ !!!!! ???? !! ???