Gelöst - tilemap.hastile () method vector3int ändert zwert auf 0C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Gelöst - tilemap.hastile () method vector3int ändert zwert auf 0

Post by Anonymous »

gelöst - also sollte ich den Z -Wert von Tilelocation Vector3int auf 0 festlegen, bevor ich ihn durch Hastil () übergeben habe es zum Tilemap -Anker). Nachdem ich es durch Hastile () geleitet habe, habe ich den Z -Wert auf den der Tilemap gesetzt. < /P>
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);
}
}
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post