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.
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. –