我有一些无定形的按钮。 (按钮的矩形相交)首先,我评估了GameScene中的BeganTouch。然后我接触了几次。
由于我的按钮仍然是子节点,因此它们吞下了触摸。好的,我已经在这里帮助了SpriteNodes的子类并处理了子类内部的触摸。现在我遇到的问题是第一个按钮没有将触摸传递给底层精灵。
但是现在我想忽略按钮的透明区域,我该怎么做?
我已经读过一个人可以使用物理学家,我已经尝试过,gravitiy = 0但是因为我通过动作移动和缩放按钮会产生剧烈效果。
为什么我可以检查触摸位置的alpha并将触摸传递给下一个精灵。
顺便说一下:如何获得对视图的引用?得到全球的loc。 let loc = touch.location(in:view)使用全局触摸位置我可以检查此点下的所有精灵为alpha!
答案 0 :(得分:2)
您可以尝试从您的子类中将触摸传递给它的父级(可能是场景)。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first as UITouch! {
//handle whatever code you want your subclass to do
...
//pass the touch event to the parent
super.touchesBegan(touches, with: event)
}
}
然后在你的场景中,循环显示你的按钮(在这个例子中我有按钮数组中的按钮)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first as UITouch! {
let touchLocation = touch.location(in: self)
for button in buttons {
if button.contains(touchLocation) {
//handle all other buttons
...
}
}
}
}
尽管在两个不同的位置进行触摸似乎有点多余。 @ Knight0fDragon是正确的,让按钮有透明区域似乎很奇怪。
答案 1 :(得分:1)
allNodes = nodes(at:globalLocation)
现在我可以检查节点的名称,计算每个节点内像素的点并获得alpha值。
thanxs all