好吧,我有这样的代码:奇怪的事情发生的SKSpriteNode与透明边框
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
flagTile.anchorPoint = CGPointZero;
flagTile.size = touchedNode.size;
flagTile.name = @"flag";
[touchedNode addChild:flagTile];
当用户点击一个字段(一个SKSpriteNode)它增加了一个更加精灵到其子 - 标志节点。 touchedNode纹理尺寸是80x80,标志纹理是80x80 ......它们是完全相等的,主要区别在于标志纹理具有透明边框。
这里:
但奇怪的事情发生了:标志节点总是有其真正(可以称之为“可点击”)面积比touchedNode小,它的位置是怎样的一个奇怪的事情。
像这样:
我的所有层的结构是这样的:compoundNode包含两层 - A和B.当需要整个树的大小调整xScale等和yScale设置(compoundNode )。没有其他尺寸的操作。
我在做什么错?
我真正需要的是让我的flagTile可点击区域成为touchedNode的大小。还有一:如果我更换:
SKSpriteNode *flagTile = [((BGSKView *) self.skView).tileSprites[@"flag"] copy];
这一个:
SKSpriteNode *flagTile = [SKSpriteNode spriteWithColor:[UIColor clearColor] size:touchedNode.size];
它的伟大工程。
我已经尝试在创建clearColor sprite后更改纹理属性 - 没有任何工作。
谢谢。
哇!谢谢,但这真的是唯一的解决方案吗?如果我有更复杂的图形需要使用带有边框的透明图像并且没有附加颜色? – AndrewShmig
这一切都取决于你的代码结构。有几件事你可以做。您可以将一个小点放在对角上,而不是使用alpha + 1图层。另一个更清晰的选择是按照原样使用sprite节点,并在其上添加一个更大的不可见节点来处理触摸。 – sangony
你可以使用你的国旗图像来创建一个国旗的alpha(这应该是一个黑色背景上的白色标志),然后你可以在Photoshop中结合这个来创建一个32位PNG文件。请注意,最好将主标记放置在坚实的背景上,颜色无关紧要,因为无论如何它都会被alpha删除。这样,你不会结束角落点,并从整个图像(没有透明像素)取得尺寸 – fuzzygoat