1
私は、プレイヤーがオブジェクトとの衝突を避けようとしているSpriteKitでゲームを構築しています。オブジェクトは3から5秒ごとに作成されていると私はそれが起こったときにゲームに行く何らかの理由で、画面の下部に衝突した後、親から削除する方法を把握しようとしている風景の下のコードを参照してください。SpriteKitでシーンを去った後にSKNodeを削除するには
import SpriteKit
class PlayScene: SKScene, SKPhysicsContactDelegate {
enum ColliderType: UInt32 {
case none = 0
case player1 = 1
case object = 2
case border = 4
case remove = 8
}
gameOver = false
let ground = SKNode()
ground.position = CGPoint(x: 0, y: 0)
ground.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: self.frame.size.width + 500, height: 1))
ground.physicsBody?.isDynamic = false
ground.physicsBody?.categoryBitMask = ColliderType.remove.rawValue
ground.physicsBody?.contactTestBitMask = ColliderType.object.rawValue
ground.physicsBody?.collisionBitMask = ColliderType.none.rawValue
character1.physicsBody!.categoryBitMask = ColliderType.player1.rawValue
character1.physicsBody!.contactTestBitMask = ColliderType.object.rawValue
character1.physicsBody!.collisionBitMask = ColliderType.object.rawValue | ColliderType.border.rawValue
object1.physicsBody!.categoryBitMask = ColliderType.object.rawValue
object1.physicsBody!.contactTestBitMask = ColliderType.player1.rawValue | ColliderType.remove.rawValue
object1.physicsBody!.collisionBitMask = ColliderType.player1.rawValue | ColliderType.border.rawValue | ColliderType.object.rawValue
if contact.bodyA.categoryBitMask == ColliderType.object.rawValue || contact.bodyB.categoryBitMask == ColliderType.object.rawValue {
gameOver == true
}
if contact.bodyA.categoryBitMask == ColliderType.remove.rawValue || contact.bodyB.categoryBitMask == ColliderType.remove.rawValue {
object1.removeFromParent()
// it runs this code as well as code above collision object with object but i want contact remove with object
}