Wenn Spieler Körper treffen ein Monster Körper die Funktion func didBeginContact(contact: SKPhysicsContact)
wird nie aufgerufen.Sprite Kit nie meine Kollision
Meine Klasse SKPhysicsContactDelegate
class GameScene: SKScene, SKPhysicsContactDelegate
die Eigenschaft implementieren collisionBitMask
ich es kommentiert, weil ich gelesen, dass wenn wir es nicht gesetzt, wird der Knoten mit allen Knoten collise kann
ich meinen Player wie folgt hinzu:
bear.position = CGPoint(x:self.frame.width/20, y:self.frame.height/5)
bear.size = CGSize(width: self.frame.width/7, height: self.frame.height/5)
bear.physicsBody = SKPhysicsBody(rectangleOfSize: bear.frame.size)
bear.physicsBody?.dynamic = false;
bear.physicsBody?.categoryBitMask = PhysicsCategory.Player
bear.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
//bear.physicsBody?.collisionBitMask = PhysicsCategory.Monster
ich hinzufügen Monster wie folgt aus:
let thePosition = CGPoint(x: positionX, y: (self.frame.height/7.4)*positionY)
let monster = SKSpriteNode(imageNamed: pattern as String)
monster.size = CGSize(width: self.frame.width/16, height: self.frame.height/11)
monster.name = name
monster.position = thePosition
monster.physicsBody = SKPhysicsBody(rectangleOfSize: monster.frame.size)
monster.physicsBody?.dynamic = false
monster.physicsBody?.categoryBitMask = PhysicsCategory.Monster // 3
monster.physicsBody?.affectedByGravity = false
monster.physicsBody?.contactTestBitMask = PhysicsCategory.Player // 4
//platformNode.physicsBody?.collisionBitMask = PhysicsCategory.Player // 5
addChild(monster)
mein PhysicalCategory
struct PhysicsCategory {
static let None : UInt32 = 0
static let All : UInt32 = UInt32.max
static let Player: UInt32 = 0b1 // 1
static let Monster : UInt32 = 0b10 // 2
static let Projectile: UInt32 = 0b100 // 3
static let Plateforme: UInt32 = 0b1000 // 4
}
Ich habe mehrere Texturen, zum Beispiel, wenn der Spieler zu Fuß Ich nenne das:
func walkingBear() {
bear.runAction( SKAction.repeatActionForever(SKAction.animateWithTextures(bearCoursFrames, timePerFrame: 0.1, resize: false, restore: true)), withKey:"cours")
}
I initlaise bearCoursFrames wie diese
var walkFrames = [SKTexture]()
var numImages : Int = bearAnimatedAtlas.textureNames.count
for var i=1; i<=numImages/2; i++ {
let bearTextureName = "cours\(i)"
walkFrames.append(bearAnimatedAtlas.textureNamed(bearTextureName))
}
bearCoursFrames = walkFrames
Wo ist mein Fehler bitte, ich ca keine lösung in anderen post finden jede hilfe wäre willkommen
------------------------------- --EDIT ------------------------------ Lösung: Ich füge gerade self.physicsWorld.contactDelegate = selbst hinzu und es funktioniert jetzt .
Lol ja, ich nahm an, dass schon getan ... Es ist einfach nicht genug SKScene machen SKPhysicsContactDelegate Protokoll entspricht ... – Whirlwind
ich völlig vergessen, und ich verlor lol mehrere Stunden Lösung suchen, aber deine antwort hat mir geholfen, weil ich nicht für dynamik wusste, dass ich mindestens einen aktivieren muss, und auch phisical body :) – tamtoum1987