簡體   English   中英

如何在 didBegin 聯系人 function 中更改 SKShapeNode 的填充顏色?

[英]How to change the fillColor of a SKShapeNode within the didBegin contact function?

我的目標是在 SKShapeNode 與另一個節點發生碰撞時立即更改該節點的 fillColor。 我確實知道如何在碰撞點編輯物理體,但我無法弄清楚如何更改節點的填充或描邊顏色等屬性。

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

,但我不知道如何將 bodyB 的 fillColor 例如更改為紅色。

我感謝您的幫助!

如果您有一個您知道應該是SKShapeNodeSKNode node ,那么您可以將其轉換為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM