Как изменить fillColor SKShapeNode в контактной функции didBegin? - PullRequest
0 голосов
/ 03 мая 2020

Моя цель - изменить fillColor SKShapeNode, как только этот узел столкнется с другим узлом. Я действительно знаю, как редактировать физическое тело в точке столкновения, но мне не удалось понять, как изменить свойства, такие как fill- или strokeColor узла.

SKShapeNode:

    func addBrick() -> SKShapeNode {

    let brick = SKShapeNode(rect: CGRect(x: -100, y: -20, width: 200, height: 40), cornerRadius: 20)
    brick.fillColor = .blue
    brick.strokeColor = .blue
    brick.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 200, height: 40))
    brick.position = CGPoint(x: 0, y: -50)
    brick.zPosition = 2

    brick.physicsBody?.categoryBitMask = BrickCategory
    brick.physicsBody?.collisionBitMask = PlayerCategory
    brick.physicsBody?.contactTestBitMask = PlayerCategory

    return brick
}

Затем я проверяю контакт между игроком и кирпичом:

    func didBegin(_ contact: SKPhysicsContact) {
    let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask

    switch contactMask {
    case PlayerCategory | BrickCategory:
        print("")



    default:
        print("Unknown collision")
    }
}

Я знаю, что могу внести изменения в само физическое тело, используя

contact.bodyB.node?.//make changes here

, но я не знаю, как изменить, например, fillColor для bodyB на красный.

Я ценю вашу помощь!

1 Ответ

1 голос
/ 03 мая 2020

Если у вас есть SKNode node, который, как вы знаете, должен быть SKShapeNode, то вы можете разыграть его следующим образом:

if let shapeNode = node as? SKShapeNode {
    shapeNode.fillColor = .red
}
...