前提・実現したいこと
swiftでskspriteNode(bullet)をTimerで1秒ごとに作成して、bullet以外のノードに当たるとremoveFromParent()でbulletを消すシューティングゲームを作っていますが、1つの画面上にbulletが複数存在する場合にどのAにノードが当たっても一番最初に作られたbulletが消えてしまいます。swiftのあたり判定では衝突したものそのもののnodeを取得する方法はないのでしょうか?
発生している問題・エラーメッセージ
同名のnodeを個別に取得したい
該当のソースコード
@objc func guntimer(){ let bullet = SKSpriteNode() bullet.size=CGSize(width: UIScreen.main.bounds.width/20.0, height: UIScreen.main.bounds.width/20.0) bullet.position=CGPoint(x: locationX, y: -UIScreen.main.bounds.height/2) bullet.physicsBody=SKPhysicsBody(rectangleOf: bullet.frame.size) bullet.color=UIColor.red bullet.physicsBody?.contactTestBitMask=2 bullet.physicsBody?.categoryBitMask=1 bullet.physicsBody?.collisionBitMask=2 bullet.physicsBody?.isDynamic=true bullet.physicsBody?.affectedByGravity=false bullet.name="bullet" self.addChild(bullet) if contact.bodyA.categoryBitMask == 2 || contact.bodyB.categoryBitMask == 2 { print(bulletRemoveNum) self.childNode(withName: "bullet")?.removeFromParent()
試したこと
個別にcategoryBitMaskをつけようとしましたが、衝突相手にも同じことをしてしまうと複雑になりすぎて断念しました。
補足情報(FW/ツールのバージョンなど)
Xcode 11.2.1
回答1件
あなたの回答
tips
プレビュー