Grundsätzlich habe ich den Boden, den Spieler (Raymond) und Münzen. Wenn der Spieler den Boden berührt, sollte nichts passieren, das Spiel geht normal weiter. Wenn der Spieler mit der Münze in Kontakt kommt, möchte ich auf der Konsole "Münzkontakt mit Spieler" drucken.Sprite Kit Kontakt Erkennung
enum ColliderType: UInt32 {
case Raymond = 1
case Object = 2
case Coin = 3
}
Raymonds Physik
raymond.physicsBody = SKPhysicsBody(circleOfRadius: raymondTexture.size().height/2)
raymond.physicsBody!.dynamic = true
raymond.physicsBody!.categoryBitMask = ColliderType.Raymond.rawValue
raymond.physicsBody?.contactTestBitMask = ColliderType.Object.rawValue
raymond.physicsBody?.collisionBitMask = ColliderType.Object.rawValue
Münzen Physik
coin.physicsBody = SKPhysicsBody(circleOfRadius: raymondTexture.size().height/2)
coin.physicsBody!.dynamic = true
coin.physicsBody!.categoryBitMask = ColliderType.Coin.rawValue
coin.physicsBody?.contactTestBitMask = ColliderType.Raymond.rawValue
coin.physicsBody?.collisionBitMask = ColliderType.Object.rawValue
Bodenphysik, wenn Sie
ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.size.width, 1))
ground.physicsBody!.dynamic = false
ground.physicsBody!.categoryBitMask = ColliderType.Object.rawValue
ground.physicsBody?.contactTestBitMask = ColliderType.Object.rawValue
ground.physicsBody?.collisionBitMask = ColliderType.Object.rawValue
Heres die Kontaktfunktion brauche ich habe, ich seine falsch wissen und ich brauche Hilfe bei der Erkennung der Berühren von Münzen und Raymond.
func didBeginContact(contact: SKPhysicsContact) {
print("coin contact with player")
}
Vielen Dank im Voraus.
Können Sie fügen Sie mehr von Ihrem Code SKPhysicsContactDelegate, vorzugsweise, wenn Sie angeben, die Physik –
@OrenEdrich done . –
Sie verwenden keine Bitmasken korrekt, 3 bedeutet 0000000000000000000000000000000011 was wirklich bedeutet, dass Objekt & Raym0nd. Du musst in Zweierpotenzen arbeiten, also ist die nächste brauchbare Zahl 4 (1,2,4,8,16,32) Wenn du es lesbar machen willst, dann benutze (1 << 2) für deine Münze (1 << 0) für Ihr Objekt und (1 << 1) für Ihr Raymond – Knight0fDragon