Почему физика не работает с SKShapes?

Я пытаюсь обнаружить столкновение между кругом, называемым игроком, и шарами, называемыми врагами, но ничего не происходит.

func didBeginContact(contact: SKPhysicsContact) {
        if let nodeA = contact.bodyA.node as? SKShapeNode, let nodeB = contact.bodyB.node as? SKShapeNode {
            if nodeA.fillColor != nodeB.fillColor {
                print("not same color")
            }else {
                print("same color")
            }
        }

    }

    private func drawPlayer(radius: CGFloat) {
        player = SKShapeNode(circleOfRadius: radius)
        player.physicsBody = SKPhysicsBody(circleOfRadius: radius)
        player.physicsBody?.affectedByGravity = false
        player.physicsBody?.isDynamic = false
        player.physicsBody?.pinned = true
        player.physicsBody?.categoryBitMask = bodyType.player.rawValue
        player.physicsBody?.collisionBitMask = bodyType.enemy.rawValue
        player.physicsBody?.contactTestBitMask = bodyType.enemy.rawValue
        player.strokeColor = SKColor.purple
        player.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
        player.glowWidth = 2.0
        world.addChild(player)
    }

    private func drawEnemy(radius: CGFloat, color: SKColor) {
        let enemyCircle = SKShapeNode(circleOfRadius: radius)
        enemyCircle.fillColor = color
        enemyCircle.glowWidth = 0.5
        enemyCircle.strokeColor = color
        enemyCircle.physicsBody = SKPhysicsBody(circleOfRadius: radius)
        enemyCircle.physicsBody?.affectedByGravity = false
        enemyCircle.physicsBody?.isDynamic = false
        enemyCircle.physicsBody?.collisionBitMask = bodyType.player.rawValue
        enemyCircle.physicsBody?.categoryBitMask = bodyType.enemy.rawValue
        let nextEnemyPosition = determineNextEnemyPosition()
        let enemyPosition = spawnAtRandomPosition(edge: nextEnemyPosition)
        enemyCircle.position = enemyPosition
        world.addChild(enemyCircle)
        numberOfEnemies += 1
        enemyCircle.name = String(numberOfEnemies)
        enemy.append(enemyCircle)
        runToCenter(enemy: enemyCircle)
    }

enum bodyType: UInt32 {
        case enemy = 1
        case player = 2
    }

и это

class GameScene: SKScene, SKPhysicsContactDelegate

и я положил это в DidMove Func

self.physicsWorld.contactDelegate = self

может кто-нибудь объяснить мне проблемы здесь

Примечание: я сделал оба не динамичными, так как я не хочу, чтобы кто-то переместил другой или изменил его, просто будьте уведомлены, когда он коснется, чтобы я остановил игру

0 ответов

Другие вопросы по тегам