2017-01-07 2 views
2
scorenode = SKSpriteNode() 
    scorenode.size = CGSize(width: self.frame.width * 0.2, height: 1) 
    scorenode.physicsBody = SKPhysicsBody(rectangleOf: scorenode.size) 
    scorenode.color = .red 
    scorenode.physicsBody?.affectedByGravity = false 
    scorenode.physicsBody?.isDynamic = false 

    scorenode.physicsBody?.categoryBitMask = PhysicsCategory.score 
    scorenode.physicsBody?.contactTestBitMask = PhysicsCategory.circle 
    scorenode.physicsBody?.collisionBitMask = 0 


    obstaclePair = SKNode() 
    obstaclePair.name = "obstaclePair" 

    rightObstacle = SKSpriteNode(imageNamed:"square") 
    rightObstacle.size = CGSize(width: self.frame.width * 0.8, height: self.frame.height/10) 

    rightObstacle.color = oColor 
    rightObstacle.colorBlendFactor = 1.0 
    rightObstacle.physicsBody = SKPhysicsBody(rectangleOf: rightObstacle.size) 

    rightObstacle.physicsBody?.categoryBitMask = PhysicsCategory.obstacle 
    rightObstacle.physicsBody?.collisionBitMask = PhysicsCategory.circle 
    rightObstacle.physicsBody?.contactTestBitMask = PhysicsCategory.circle 
    rightObstacle.physicsBody?.isDynamic = false 

    leftObstacle = SKSpriteNode(imageNamed:"square") 
    leftObstacle.size = CGSize(width: self.frame.width * 0.8 , height: self.frame.height/10) 
    leftObstacle.physicsBody = SKPhysicsBody(rectangleOf: leftObstacle.size) 

    leftObstacle.color = oColor 
    leftObstacle.colorBlendFactor = 1.0 
    leftObstacle.physicsBody?.categoryBitMask = PhysicsCategory.obstacle 
    leftObstacle.physicsBody?.collisionBitMask = PhysicsCategory.circle 
    leftObstacle.physicsBody?.contactTestBitMask = PhysicsCategory.circle 
    leftObstacle.physicsBody?.isDynamic = false 
    circle = SKSpriteNode(imageNamed: "Circle") 


circle.size = CGSize(width: 50, height: 50) 
    circle.position = CGPoint(x: self.frame.width/2, y: self .frame.height/4) 
    circle.color = .blue 
    circle.colorBlendFactor = 1.0 
    circle.physicsBody = SKPhysicsBody(circleOfRadius: circle.frame.height/2) 
    circle.physicsBody?.categoryBitMask = PhysicsCategory.circle 
    circle.physicsBody?.collisionBitMask = PhysicsCategory.obstacle 
    circle.physicsBody?.contactTestBitMask = PhysicsCategory.obstacle | PhysicsCategory.score 
    circle.physicsBody?.affectedByGravity = false 
    circle.physicsBody?.isDynamic = true 
    circle.zPosition = 10 

Это физика часть моего проекта, и у меня есть круг SKSpritenode и SKSpritenode оценка узла. Они не должны сталкиваться, и я не ставил для них обе стороны, но они все еще сталкиваются. Что я делаю не так?быстрые skspritenodes coliding даже мысли нет столкновения немного не маскирует

+0

Я предлагаю вам опубликовать определение 'PhysicsCategory' – 0x141E

+0

это потому, что isDynamic собственности. – Mina

+0

Я иду с @ 0x141E, нумерация категории, вероятно, неверна, препятствие, вероятно, 3, что не является допустимым номером категории – Knight0fDragon

ответ

1

у вас есть

static let circle : UInt32 = 0x1 << 1 
static let obstacle : UInt32 = 0x1 << 1 
static let score : UInt32 = 0x1 << 1 

вам нужно

static let circle : UInt32 = 0x1 << 0 
static let obstacle : UInt32 = 0x1 << 1 
static let score : UInt32 = 0x1 << 2 
+0

да, я понял, что давным-давно, но спасибо за ответ – Repardeimaj

0

Если вы не занимаетесь физикой, связанной с узлом оценки, то почему бы просто не сделать ее меткой и удалить из нее физику.

+1

оценка узла, вероятно, он использует, чтобы вызвать счет, когда контакт сделан, а не ярлык – Knight0fDragon

Смежные вопросы