SKSpriteNode
を使用してSpriteKitでオーバーレイを作成しようとしています。しかし、オーバーレイを通したいので、isUserInteractionEnabled
をfalseに設定します。しかし、私がこれを行うと、SKSpriteNode
は依然としてすべてのタッチを吸収しているように見え、根底にあるノードは何もすることができません。isUserInteractionEnabledが無効の場合、SKSpriteNodeはパススルーを許可しません。
は、ここで私が話しているかの例です:
class
TouchableSprite: SKShapeNode {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("Touch began")
}
}
class GameScene: SKScene {
override func sceneDidLoad() {
// Creat touchable
let touchable = TouchableSprite(circleOfRadius: 100)
touchable.zPosition = -1
touchable.fillColor = SKColor.red
touchable.isUserInteractionEnabled = true
addChild(touchable)
// Create overlay
let overlayNode = SKSpriteNode(imageNamed: "Fade")
overlayNode.zPosition = 1
overlayNode.isUserInteractionEnabled = false
addChild(overlayNode)
}
}
私はSKSpriteNode
をサブクラス化して、手動で適切なノードへのタッチイベントを委任しようとしたが、それは奇妙な行動の多くになります。
ご協力いただければ幸いです。ありがとう!
/**
Controls whether or not the node receives touch events
*/
open var isUserInteractionEnabled: Bool
をが、これはタッチの内部ノードメソッドを参照します。
のために8、9、および10の間で確認する必要がありますので、あなたのZPOSITIONシーンを下回っているので、あなたのZORDERがoverlay-> scene->で、ケースはなかったかもしれませんtouchable – Knight0fDragon