Tilemap.hastile () method vector3int ändert den Zwert auf 0C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Tilemap.hastile () method vector3int ändert den Zwert auf 0

Post by Anonymous »

Ich bin ziemlich neu und ein aufstrebender Spieleel. 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. Vor der IF -Anweisung erhalte ich die erwarteten Werte von Z (zwischen 0 und 3). Direkt nach der IF -Anweisung werden die gleichen z -Werte auf 0 gesetzt. /> Vector3int (4, 18, 3) - vector3int (4, 18, 0) < /p>
Dinge, die ich ausprobiert habe: < /p>
1 - Entfernen des Var der Tilelocation (ich dachte, vielleicht war es irgendwie zurückgewiesen, weil es ein lokales Variable war. Hastil () Methode < /p>
3 - Entfernen Sie die! MAP.Containskey -Methode (hatte das Problem immer noch) < /p>
4 - Ich habe versucht, eine Reihe anderer Dinge anzupassen und anzupassen, aber keinen Erfolg hatte, entweder < /p>
Ich kann jeden Gewicht von Tile und Overteytile -Overytile -Overtile -Overtile -IT -Overtile -Overtile -IT -Overtile -IT -Overtile -IT -Tile haben. 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);
}
}
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post