我有一个SKSpriteNode,它的纹理周围有一个很明显的alpha边距。纹理是92x92点;由于alpha边距,节点的可触摸框架最终变得更小(40x40)。如果它发生在92x92纹理中的任何地方,我想要注册触摸。
我用nodesAtPoint检测touchesBegan中的节点。但是,如果触摸alpha边距,则不会检测到该节点。我试图通过在我的SKSpriteNode中重写calculateAccumulatedFrame来改变这一点,但似乎什么也没做。我的方法很少被调用,而且是不可预测的。我假设如果一个节点没有子节点,SpriteKit会在不使用calculateAccumulatedFrame方法的情况下引用框架属性。
有什么解决方案吗?
发布于 2015-02-04 05:14:24
我不知道如何实际更改SpriteKit在纹理中关于alpha的行为方式,但作为替代解决方案,我覆盖了场景的nodesAtPoint。
如果出于某种原因,您必须这样做,请记住,CGRect的原点位于矩形的左下角,而不是像SKNode那样位于中心。
https://stackoverflow.com/questions/28290847
复制相似问题