2017-04-13 16 views
1

Ich habe einen Baum, der aus einer Reihe von Gelenken aufgebaut ist. Der Anker ist die Basis/der Baumstumpf. Mein Held kann derzeit nicht durch den Anker gehen. Die Einstellung von collisionBitMask = 0 funktioniert nicht für den Anker, aber dieser Ansatz funktioniert für die einzelnen Gelenksegmente.Wie passiert man einen Spritekit Joint Anker?

Also im Wesentlichen möchte ich nur diese Kollision vermeiden. Hier ist der Code:

// Code für Anker

let chunkHolder = SKSpriteNode(imageNamed: ImageName.ChunkHolder) 
chunkHolder.position = anchorPoint 

chunkHolder.physicsBody = SKPhysicsBody(circleOfRadius: chunkHolder.size.width/2) 
chunkHolder.physicsBody?.isDynamic = false 
chunkHolder.physicsBody?.categoryBitMask = PhysicsCategory.chunkAnchor.rawValue 
chunkHolder.physicsBody?.collisionBitMask = 0 

addChild(chunkHolder) 

// einzelnen Baum segements wo Held korrekt durchläuft:

for i in 0..<length { 
    let treeSegment = SKSpriteNode(imageNamed: ImageName.ChunkTexture) 
    let offset = treeSegment.size.height * CGFloat(i + 1) 
    treeSegment.position = CGPoint(x: anchorPoint.x, y: anchorPoint.y - offset) 
    treeSegment.name = "tree" + String(i) 

    treeSegments.append(treeSegment) 
    addChild(treeSegment) 

    treeSegment.physicsBody = SKPhysicsBody(rectangleOf: treeSegment.size) 
    treeSegment.physicsBody?.collisionBitMask = 0 
} 

// Gelenke

for i in 1..<length { 
     let nodeA = treeSegments[i - 1] 
    let nodeB = treeSegments[i] 
    let joint = SKPhysicsJointPin.joint(withBodyA: nodeA.physicsBody!, bodyB: nodeB.physicsBody!, anchor: CGPoint(x: nodeA.frame.midX, y: nodeA.frame.minY)) 

    scene.physicsWorld.add(joint) 
} 

// Als Referenz hier ist Hero Physik Körper:

self.physicsBody?.categoryBitMask = PhysicsCategory.hero.rawValue 
self.physicsBody?.contactTestBitMask = PhysicsCategory.ground.rawValue 

Auch die Einstellung der Kollision von HeldenBitMask auf 0 wird derzeit nicht helfen, weil dann auch der Held durch den Boden fallen wird.

+0

Ich mag an würde immer noch die Kollision deaktivieren gelöst, aber ein handlichen Trick ist, die Physik Körpergröße 1. Der Held über gerade setzen Wanderungen es ist gut. –

Antwort

0

Dies wurde durch auch die Einstellung der categoryBitMask auf 0.

chunkHolder.physicsBody?.categoryBitMask = 0 
chunkHolder.physicsBody?.collisionBitMask = 0 
Verwandte Themen