Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 等距SKTileMapNode的排序不正确?_Ios_Sprite Kit_Tiled - Fatal编程技术网

Ios 等距SKTileMapNode的排序不正确?

Ios 等距SKTileMapNode的排序不正确?,ios,sprite-kit,tiled,Ios,Sprite Kit,Tiled,我正在以编程方式使用SKTileMapNode。代码是C#(Xamarin.iOS),但每个Swift/ObjC开发人员都应该能够阅读 问题是等距投影中瓷砖的排序似乎不正确,我看不出原因。要进行测试,映射有1行5列 请参见屏幕截图: 0 | 0和2 | 0处的瓷砖位于其他瓷砖的前面。然而,4 | 0处的金字塔样式瓷砖在3 | 0处的瓷砖前面绘制正确 我使用两个简单的瓷砖: 第一个分辨率为133x83px,第二个分辨率为132x131px 这是平铺中的外观,也是我试图复制的: 使用以下代码

我正在以编程方式使用
SKTileMapNode
。代码是C#(Xamarin.iOS),但每个Swift/ObjC开发人员都应该能够阅读

问题是等距投影中瓷砖的排序似乎不正确,我看不出原因。要进行测试,映射有1行5列

请参见屏幕截图:

0 | 0和2 | 0处的瓷砖位于其他瓷砖的前面。然而,4 | 0处的金字塔样式瓷砖在3 | 0处的瓷砖前面绘制正确

我使用两个简单的瓷砖:

第一个分辨率为133x83px,第二个分辨率为132x131px

这是平铺中的外观,也是我试图复制的:

使用以下代码设置平铺贴图并将其添加到场景中:

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)的平铺大小是平铺菱形底座的大小。如果使用平面平铺,这与纹理大小相同。对于具有高度的瓷砖,则不同。但是,更改平铺大小会影响平铺的对齐,我使用的大小与“平铺”中的大小相同,并且给出了正确的结果,因此这不是罪魁祸首


我做错了什么,或者我在哪里想错了?

我对主要问题没有答案,但用于初始化地图的平铺大小(128 | 64)是基础平铺的大小,用于将等轴测坐标转换为实际正交空间


如果在平铺中更改此大小,将影响定位栅格的大小。您可以在Xcode的内置平铺贴图编辑器(或者我猜在任何其他等轴测平铺贴图编辑器)中看到类似的效果。

“我做错了什么,或者我认为哪里错了?”?可能是希望苹果的第一个新API已经过测试。不幸的是,苹果似乎很少对Sprite工具包和SceneKit进行内部测试。每个版本都会带来新的特性和新的bug。这种情况已经持续了很长时间,很少有用户测试他们的API Beta。他们只是认为他们会被抓到,然后等着,继续用老东西干下去。而且:他们对错误报告的反应很糟糕。。。他们的bug报告系统是一场噩梦。它使web 1.0网站看起来是最新的。只是好奇你的
ignoresSiblingOrder
设置为什么?你是指我添加到@MobileBen的视图?我试了两种变体。没什么区别。你看过邻近的面具了吗?我没有使用过SKTileMapNodes,但我已经开发过基于tile的游戏。通常必须对绘图顺序进行编码。瓷砖上通常也有层(如地面和其他物品)。因此,这只是让我怀疑我们在这里面临一个bug。