SKEmitterNode 的问题?
Posted
技术标签:
【中文标题】SKEmitterNode 的问题?【英文标题】:Issue with SKEmitterNode? 【发布时间】:2017-06-22 15:19:44 【问题描述】:所以我的一个 SKEmitterNode 有问题。我有一个 SKSpriteNode,当触摸它时会打开一个新场景。这是开始接触的代码:
for touch: AnyObject in touches
let location = (touch as! UITouch).location(in: self)
if let nodeName = self.atPoint(location).name
if nodeName == "playBox" || nodeName == "playButton"
buttonSound()
pulse(playBox, scene: "GameScene")
else if nodeName == "shopBox" || nodeName == "shopButton"
buttonSound()
pulse(shopBox, scene: "shop")
此时,一切正常。当我将我的 SKEmitterNode 添加到场景中时,会出现我的问题。发射器是星场效应,所以小点从场景顶部到底部。添加此发射器后,我的按钮将停止工作!
我已经尝试了所有降低生成率、降低 zPosition 的方法,但似乎没有任何效果。
如果您有任何建议,请告诉我。谢谢!
-马特
【问题讨论】:
【参考方案1】:很明显,粒子系统是通过点击测试而不是按钮来检测的。您可以使用 nodes(at:) 来获取该点所有节点的列表(而不仅仅是第一个节点)。然后您需要迭代或过滤该数组并找出这些节点中的哪些是按钮。
for touch: AnyObject in touches
let location = (touch as! UITouch).location(in: self)
let nodes = self.nodes(at:location)
let filtered1 = nodes.filter $0.name == "playBox" || $0.name == "playButton"
let filtered2 = nodes.filter $0.name == "shopBox" || $0.name == "shopButton"
if let node = filtered1.first
buttonSound()
pulse(playBox, scene: "GameScene")
if let node = filtered2.first
buttonSound()
pulse(shopBox, scene: "shop")
【讨论】:
以上是关于SKEmitterNode 的问题?的主要内容,如果未能解决你的问题,请参考以下文章
skemitternode 与 skspritenode 碰撞