我正在尝试使用SpriteKit
和JSTileMap
来显示大型地图。地图的大小为3398 x 4842
。
我通过在一个图层中使用4个尺寸为1699 x 2421的图块来定义TMX地图,每个图块与图块集匹配。
这是tmx:
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="2" height="2" tilewidth="1699" tileheight="2421">
<tileset firstgid="1" name="BL" tilewidth="1699" tileheight="2421">
<image source="new_york_map_bl@2x.jpg" width="1699" height="2421"/>
</tileset>
<tileset firstgid="2" name="BR" tilewidth="1699" tileheight="2421">
<image source="new_york_map_br@2x.jpg" width="1699" height="2421"/>
</tileset>
<tileset firstgid="3" name="TL" tilewidth="1699" tileheight="2421">
<image source="new_york_map_tl@2x.jpg" width="1699" height="2421"/>
</tileset>
<tileset firstgid="4" name="TR" tilewidth="1699" tileheight="2421">
<image source="new_york_map_tr@2x.jpg" width="1699" height="2421"/>
</tileset>
<layer name="Main Layer" width="2" height="2">
<data encoding="base64" compression="zlib">
eJxjZmBgYAFiRiBmAmIAAIAACw==
</data>
</layer>
</map>
虽然我能够使用Tiled
软件查看TMX地图,但我无法使用SpriteKit
和JSTileMap
在xode中显示地图。加载部分似乎处理正确,但我无法想象任何东西:我有一个带标签的黑屏:0个节点/ 0个绘图。有什么可能导致无法正确显示我的地图吗?
答案 0 :(得分:3)
问题是图像上的@ 2x。这向SpriteKit指示您的图像正在处理点,而不是像素,并加载图像。 TMX地图格式以像素为单位工作,而不是点,这会抛出预期的数学运算。您可以通过在setSourceImage:
方法中放置一个断点并查看_imageSize变量来验证这一点 - 当使用@ 2x后缀时,它会减少一半。
从你的图像中删除@ 2x(在Xcode项目和TMX地图XML中),你应该很高兴。
请注意,一旦进行了这些更改,我就必须清理,以便在iPhone模拟器中看到它们。