プログラムにシーンにSKSpriteNode(name = building1)を追加し、touchesBegan関数を起動しません。だから私は(同じ=テクスチャを使用して)シーンエディタを介してスプライトノード(name = building2、parent = GameScene)を追加しようとしました。私は両方の建物を見ることができますが、第2の建物だけがtouchesBegan機能を起動します。プログラムでSpritekitNodeを追加してもtouchesBeganがトリガーされません。シーンエディタで追加された同じSpritekitノードが動作します。
class GameScene: SKScene {
var build = SKSpriteNode()
override func didMove(to view: SKView) {
build = SKSpriteNode(imageNamed: "build")
build.name = "building1"
build.anchorPoint = CGPoint(x: 0.5, y: 0.5)
build.position = CGPoint(x: 0, y: 0)
build.zPosition = 0
build.isUserInteractionEnabled = true
self.addChild(build)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("Something was touched")
for touch in touches {
let location = touch.location(in: self)
if atPoint(location).name! == "building1" {
print("\(atPoint(location).name!) was touched")
}
if atPoint(location).name! == "building2" {
print("\(atPoint(location).name!) was touched")
}
}
}
}
奇妙なことは、私はbuilding2(シーンエディタを通じて追加)をタッチすると、私はbuilding1もすなわち何も表示されない機能を起動しませんがbuilding2が「感動した出力」「何かが触れた」を得ることですログに記録する。 私は何が間違っていますか? おかげ
はい、うまくいきました!そして、ここで私は自分のコードで全部終わっていると思った。ありがとう –
私は何かを逃したかどうかを確認するために2番目のスプライトを追加しました。残念ながら、私はisUserInteractionEnabledプロパティがAttributes Inspectorに表示されないと思います。いずれにせよ、それは本当に微妙な点であり、説明する時間を取ってくれてありがとう。 –