gpt4 book ai didi

ios - 等距 SKTileMapNode 的排序不正确?

转载 作者:行者123 更新时间:2023-11-29 11:54:44 36 4
gpt4 key购买 nike

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

问题是等角投影中的图 block 排序似乎不正确,我不明白为什么。为了进行测试, map 有 1 行和 5 列。

看截图:

Sorting

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

我正在使用两个简单的磁贴:

Tile1 Tile2

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

这是它在 Tiled 中的样子以及我正在尝试重现的内容:

Tiled

使用以下代码设置瓦片 map 并将其添加到场景中:

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);

如果首先怀疑瓷砖尺寸不正确。用于初始化瓦片 map (128|64) 的瓦片大小是瓦片菱形底部的大小。如果使用平面图 block ,则这与纹理大小相同。对于有高度的瓷砖,它是不同的。但是,更改图 block 大小会影响图 block 的对齐方式,我使用的尺寸与 Tiled 中的尺寸相同并且它给出了正确的结果,所以这不是罪魁祸首。

我哪里做错了或者我哪里想错了?

最佳答案

我没有主要问题的答案,但您用于初始化 map 的图 block 大小 (128|64) 是基础图 block 的大小,用于将等距坐标转换为实际的正交空间。

如果在 Tiled 中更改此大小,则会影响定位网格的大小。您可以在 Xcode 的内置瓦片 map 编辑器(或我猜的任何其他等距瓦片 map 编辑器)中看到类似的效果。

关于ios - 等距 SKTileMapNode 的排序不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39626615/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com