【发布时间】: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