【问题标题】:Scrolling a Tilemap in Sprite-Kit (JSTileMap glitch)在 Sprite-Kit 中滚动 Tilemap(JSTileMap 故障)
【发布时间】:2014-09-23 21:34:01
【问题描述】:

由于 JSTileMap 扩展了 SKNode,您可以使用 API 像任何其他节点一样移动和动画您的 tilemap。但是,我不断收到这种奇怪的效果/故障...

代码:

_tiledMap = [JSTileMap mapNamed:@"Cloud.tmx"];
if (_tiledMap) {
    [self addChild:_tiledMap];
}
_tiledMap.position = CGPointMake(800, 0);

SKAction *scrollLeft = [SKAction moveTo:CGPointMake(600, 0) duration:4];
SKAction *scrollRight = [SKAction moveTo:CGPointMake(700, 0) duration:4];
SKAction *sequence = [SKAction sequence:@[scrollLeft, scrollRight]];
SKAction *repeat   = [SKAction repeatActionForever:sequence];
[_tiledMap runAction:repeat];

结果:

如您所见,每当 JSTileMap 改变方向时,取决于它的左或右,图像被裁剪或其他什么,我无法解释。如果节点本身是 SKSpriteNode,则不会发生这种情况。我在背景图像中添加了数字以供视觉参考。


编辑

进一步的测试表明,在更新循环中手动移动 JSTileMap 的位置 (_tiledMap.position.x = x+1) 具有相同的效果。它在向左动画时裁剪图像/图块,并在向右动画时恢复正常。

【问题讨论】:

  • 不要移动地图,而是移动地图上的可见视图。
  • 您是否尝试将 JSTileMap 添加到 SKNode 并改为移动 SKNode?​​span>
  • @Code Monkey,我尝试将 JSTileMap 添加为 SKSpriteNode 的子节点并移动它,结果相同。桑尼,请澄清。
  • 如果将 _tiledMap.position = CGPoint(x,y) 的 JSTileMap 放置到有问题的区域(不使用 SKAction),它是否正确渲染?
  • 我进行了一些测试。如果我手动更改 _tilemap.position (ig _tiledMap.position = CGPointMake(_tiledMap.position.x+1.0, 0 在每个更新循环上),似乎会发生同样的事情。发生故障的区域或位置是任意的,它发生在屏幕上正在为图块设置动画的任何位置。但是请注意,它只会在向左设置动画时裁剪图像。当我将图像向右移动时,它会恢复正常。

标签: ios objective-c sprite-kit jstilemap


【解决方案1】:

看来我使用的是旧版/未维护的 JSTileMap。 Slycrel 的 JSTileMap 版本解决了这个问题。

https://github.com/slycrel/JSTileMap

【讨论】:

    【解决方案2】:

    我找到了解决方法。显然问题是第一个tileset列本身由于某种原因被裁剪(如果有人知道这一点,请告诉我)。因此,解决方案是创建一个比原始 tilemap 尺寸宽 2 个 tile 单位的 tilemap。例如,如果您的切片设置为 32x32(1024x768 的切片图),您应该生成一个 1088x768 的切片图并在第一列之后开始绘制。

    见下图。

    【讨论】:

    • JSTileMap 到底是什么,你能用内置的 sprite kit 功能实现类似的东西吗?
    • @Code Monkey,JSTileMap 允许您在 sprite-kit 中使用平铺地图编辑器(我正在使用 Tiled)。如果您不熟悉平铺地图编辑器,它们允许您为游戏创建地图布局 - 因此,您无需使用巨大的图像作为背景,而是将整个地图分解为平铺(例如 32x32 平铺)。 Sprite-kit (JSTileMap) 然后只加载来自 tilemap 的可见图块,使内存管理更好。我不知道有什么类似于 sprite-kit 的原生功能,请解释一下。
    • @JonnyRamos 你可以在 github 上提交一个示例项目作为问题吗?我想进一步看看,看看我能不能解决这个问题。 (github.com/slycrel/JSTileMap/issues)
    • 投反对票,因为更新后提示似乎已过时(请参阅 OP 的其他答案)
    • 我在 spritekit 3 中使用 xcode tilemap 编辑器,当我的角色向左移动时,它的动画无缘无故有点小故障。我试图从上、下、左、右清空一行瓷砖,就像在这个答案中一样,故障就消失了。 +1
    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 2020-05-03
    • 2013-11-29
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多