0
スプライトを押すと何かが起きるようにしようとしていますが、タッチが正しく認識されるようにするために問題があります。SwiftでSKSpriteNodeがタッチされたときにコードをアクティブにできません
class GameScene: SKScene {
var optDiceSprite = SKSpriteNode()
override func didMoveToView(view: SKView) {
createOptSprite()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
let node = nodeAtPoint(location)
print("NAME OF NODE: \(node.name)")
if (node == optDiceSprite) {
print("WHY U NO WORKY!")
}
}
}
func createOptSprite() {
optDiceSprite = SKSpriteNode(imageNamed: "sound_off")
optDiceSprite.userInteractionEnabled = true
optDiceSprite.position = CGPoint(x: CGRectGetMaxX(self.frame) - 30, y: CGRectGetMinY(self.frame) + 30)
optDiceSprite.setScale(0.5)
addChild(optDiceSprite)
}
printステートメントを開始していません。このコードがtouchesBeganメソッドで実行される前に、スプライトをグローバルに宣言し、作成して配置します。
私がしようとしているのは、ユーザーがサウンドアイコンスプライトに触れるたびに、サウンドエフェクトのオン/オフを切り替えることです。
ご協力いただきましてありがとうございます。
代わりにこれを試してみて、nodeAtLocationが未解決であるように見え、これは有効な方法ですか?代わりにnodeAtPoint(location)を使用できることがわかりましたが、まだこの作業が表示されていません。私は、forループのサイドにブレークポイントを設定すると、スプライトはif文の外側のコメントを起動しないことに気付きました。思考? – tbaldw02
申し訳ありませんが、私の一部はnodeAtPointでなければなりません。それは挑戦的に動作します – crashoverride777
コードを追加しました。私が与えたコード変更はすばらしかったですが、私はもっと大きな問題があると思います。 if文は、私が作成した特定のスプライトに当たったときに発砲しません。私がバックグラウンドを打つと、しかしゼロの値で発射されます。スプライト自体に何か問題がありますか? – tbaldw02