2016-09-21 103 views
1

我正在編程使用SKTileMapNode。代碼是C#(Xamarin.iOS),但每個Swift/ObjC開發人員都應該可讀。等距SKTileMapNode的排序不正確?

問題是,在等軸測投影瓷磚排序似乎是不正確的,我不明白爲什麼。爲了測試,地圖有1行5列。

見截圖:

Sorting

瓷磚在0 | 0 2 | 0是在別人面前。但是,在4 | 0處的金字塔樣式的拼圖在3 | 0處正確繪製。

我用兩個簡單的地磚:

Tile1 Tile2

第一個擁有133x83px的分辨率,第二個是132x131px

這是它看起來像瓷磚和我想重現的內容:

Tiled

瓷磚地圖是設置和使用下面的代碼添加到場景:

var tileDef1 = new SKTileDefinition (SKTexture.FromImageNamed ("landscapeTiles_014")); 
var tileDef2 = new SKTileDefinition (SKTexture.FromImageNamed ("landscapeTiles_036")); 

var tileGroup1 = new SKTileGroup (tileDef1); 
var tileGroup2 = new SKTileGroup (tileDef2); 

var tileSet = new SKTileSet (new [] { tileGroup1, tileGroup2 }, SKTileSetType.Isometric); 

var tileMap = SKTileMapNode.Create(tileSet, 5, 2, new CGSize (128, 64)); 

tileMap.Position = new CGPoint (0, 0); 

tileMap.SetTileGroup (tileGroup1, 0, 0); 
tileMap.SetTileGroup (tileGroup2, 1, 0); 
tileMap.SetTileGroup (tileGroup1, 2, 0); 
tileMap.SetTileGroup (tileGroup2, 3, 0); 
tileMap.SetTileGroup (tileGroup2, 4, 0); 

tileMap.AnchorPoint = new CGPoint (0, 0); 
Add (tileMap); 

如果第一懷疑一個不正確的瓦片尺寸。用於初始化平鋪貼圖(128 | 64)的平鋪大小是平鋪的菱形基底的大小。如果使用平鋪瓷磚,則與紋理大小相同。對於具有高度的瓷磚,它有所不同。但是,更改拼貼大小會影響拼貼的對齊方式,因爲我使用的拼貼大小與拼貼中的大小相同,並且它提供了正確的結果,因此不能是罪魁禍首。

我在做什麼錯,或者我在想什麼錯?

+0

「我做錯了什麼或我認爲錯在哪裏」?可能希望蘋果首次發佈新的API已經過測試。 – Confused

+0

不幸的是,蘋果似乎對Sprite Kit和SceneKit的內部測試做得很少。每個版本都帶來新功能和新bug。而且這種情況持續了很長時間,只有很少的用途測試他們的API beta。他們只是假設他們會被搗毀並等待,並與老舊的東西相處。而且......他們在回答錯誤報告時是極其糟糕的......他們的錯誤報告系統是一個噩夢。它使Web 1.0網站看起來更新。 – Confused

+0

只是好奇你的'ignoresSiblingOrder'設置爲? –

回答

1

對於主要問題,我沒有答案,但用於初始化映射(128 | 64)的圖塊大小是基本圖塊的大小,用於將等距座標轉換爲實際的正交空間。

如果在Tiled中更改此大小,它將影響定位網格的大小。您可以在Xcode的內置瓷磚貼圖編輯器中看到類似的效果(或者我猜,在任何其他等軸測瓷磚貼圖編輯器中)。

+0

是的。所以這只是造成我懷疑我們在這裏面臨一個錯誤。 – Krumelur