【发布时间】:2014-03-22 14:02:28
【问题描述】:
我很难在一个简单的等距 Sprite Kit 游戏中实现点击处理。
我有一个包含多个 Tile 对象 (SKSpriteNode) 的地图 (SKNode) 的游戏场景 (SKScene)。
这是地图的截图:
我希望能够检测到用户点击的磁贴,所以我在磁贴对象上实现了 mouseDown。这是我在 Tile.m 中的 mouseDown :
-(void)mouseDown:(NSEvent *)theEvent
{
[self setColorBlendFactor:0.5];
}
代码似乎工作正常,但有一个小故障:节点重叠并且在节点的透明部分检测到点击事件。示例(添加的矩形仅用于说明问题。逻辑中未使用它们):
如您所见,如果我点击图块 7 的左上角,图块 8 就会变成透明的。
我尝试了一些方法,比如在点击位置获取所有节点并检查点击是否在 CGPath 内但没有成功(我认为坐标有问题)。
所以我的问题是如何只检测纹理而不是透明部分的点击?或者我对问题的处理方法是错误的?
任何建议将不胜感激。
编辑:任何对我最终使用的解决方案感兴趣的人,请参阅my answer here
【问题讨论】:
标签: sprite-kit isometric