好的,我有这段代码:
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
flagTile.anchorPoint = CGPointZero;
flagTile.size = touchedNode.size;
flagTile.name = @"flag";
[touchedNode addChild:flagTile];
当用户点击一个字段(SKSpriteNode)时,它会向其子节点添加一个精灵 - 标记节点。 touchNode纹理大小为80x80,标志纹理为80x80 ......它们完全相同,主要区别在于标志纹理具有透明边框。
下面:
但奇怪的是:标志节点总是的真实(让我们称之为#34; tappable")区域小于被触摸的节点及其位置是一种奇怪的事情。
像这样:
我的所有图层的结构都是这样的:compoundNode包含两个图层--A和B.当需要调整整个树的大小时,设置xScale和yScale(compoundNode)。没有其他大小的操作。
我做错了什么?
我真正需要的是将flagTile可点击区域设置为touchNode的大小。还有一个:如果我更换:
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
这一个:
SKSpriteNode *flagTile = [SKSpriteNode spriteWithColor:[UIColor clearColor] size:touchedNode.size];
效果很好。
我甚至尝试在创建clearColor精灵后更改纹理属性 - 没有任何效果。
感谢。
答案 0 :(得分:2)
命令SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
正在创建您的精灵,但忽略了标志周围的不可见部分。当我在图像编辑器(Adobe Fireworks)中打开您的标记图像并选择您的标记时,只选择实际标记rect(查看我发布的图像)。
我能想到的唯一解决方法是在标志后面添加一个白色(或任何你想要的颜色)方块,大小为80,80。然后将方块的alpha设置为完全透明的1点。我认为这应该允许整个80 x 80的图像可以触摸。
答案 1 :(得分:1)
我通过在两个角落(左下角和右上角)添加两个点来解决我的问题,不透明度设置为1%并且效果很好。