Ich hoffe, das macht für alle Sinn. Ich werde gerne weiter klären, wenn Menschen interessiert sind. Ich bin mir nicht sicher, ob ich meinen ursprünglichen Codeblock ändern oder neu aktualisiert habe. Lassen Sie mich wissen, was der Standard ist, wenn Sie diesen Beitrag bearbeiten möchten. Danke Jungs! < /P>
----------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------
Ich bin ziemlich neu und ein aufstrebender Spielelte . Ich arbeite derzeit an einem 2D isometrischen taktischen RPG mit der Unity Game Engine und ich bin auf ein besonderes Problem gestoßen. Jede "Höhe" -Differenz wird durch den Z -Wert unterschieden (der importierte Tilemap hat tatsächlich 4 separate Tilemaps, wobei die Basis/der Wasserstand Z = 0, Bodenstufe Z = 1 usw.) und ich in mein Spiel importiert habe. Ich habe mehrere verschachtelte Schleifen, um jeden Tilemap - jeden x -Wert - jeden y -Wert zu schleifen. Dies bringt mir jeden möglichen Kachelort in meinem Tilemap. Mein Problem ist, dass jeder Kachelort mit einem Z -Wert von 0 zurückgekehrt ist. Verfahren. Vor der IF -Anweisung erhalte ich die erwarteten Werte von Z (zwischen 0 und 3). Direkt nach der if if -Anweisung werden die gleichen Z -Werte auf 0 gesetzt. , 5, 1) - vector3int (3, 5, 0)
(4, 18, 3) - Vector3int (4, 18, 0) < /p>
Dinge, die ich ausprobiert habe: < /p>
1 - Entfernen Sie die var of tilelocation (ich dachte vielleicht, es würde irgendwie zurückgesetzt Die Hastil () -Methode < /p>
3 - Entfernte die! Eine Reihe anderer Dinge anzupassen, hatte aber auch keinen Erfolg < /p>
Mein Ziel ist es, jede Fliese zu lokalisieren und eine unsichtbare "Overlaytile" -Vorfindung zu fördern, damit ich mit ihnen interagieren kann. d.h., ein Zeichen zu bewegen oder eine Fliese für einen Aoe -Zauber abzielen. < /p>
Fehlt mir etwas? Ist das eine seltsame Eigenart von Hastile (), die ich herumarbeiten muss? Danke! < /P>
Hier ist der entsprechende Code: < /p>
Code: Select all
void Start()
{
tileMaps = AssembleTilemapLayers();
tileMaps.Reverse();
map = new Dictionary();
for (int i = 0; i < tileMaps.Count; i++)
{
var tileMap = tileMaps[i];
var bounds = tileMap.cellBounds;
var z = (int)tileMap.transform.position.z;
// looping through all map tiles
for (int y = bounds.min.y; y < bounds.max.y; y++)
{
for (int x = bounds.min.x; x < bounds.max.x; x++)
{
tileLocation = new Vector3Int(x, y, z);
if (tileMap.HasTile(tileLocation) && !map.ContainsKey(tileLocation))
{
var overlayTile = Instantiate(overlayTilePrefab, overlayContainer.transform);
var cellWorldPosition = tileMap.GetCellCenterWorld(tileLocation);
overlayTile.transform.position = new Vector3(cellWorldPosition.x, cellWorldPosition.y, cellWorldPosition.z + 1);
overlayTile.GetComponent().sortingOrder = tileMap.GetComponent().sortingOrder;
overlayTile.gridLocation = tileLocation;
map.Add(tileLocation, overlayTile);
}
}
}
}
}