Spritekit Physics body circle of radius not registering collision

问题描述 投票:0回答:1

我对 Swift 和 Sprite 工具包比较陌生,但遇到了一个问题,我将 SKSpriteNode 的物理体更改为:

bucket50.physicsBody = SKPhysicsBody(circleOfRadius: bucket50.size.width / 4.0)

本来是-

bucket50.physicsBody = SKPhysicsBody(纹理:bucket50.texture!,大小:bucket50.texture!.size())

自从进行此更改后,我设置的碰撞检测不再有效,但就我而言,我只是让物理体变小了。我向桶发送的球确实发生了碰撞,但没有记录分数。

代码也在下面,我用于检测。

func didBegin(_联系人:SKPhysicsContact){

    if contact.bodyA.node?.name == "bucket_50" {

        ball.isHidden = true
        
        //Add score for hitting bucket
        highScore = highScore + 50
        
        //Display Text
        score.text = "Score - \(highScore)"

    }

提前致谢

swift sprite-kit skspritenode
1个回答
0
投票

首先需要给你要使用的节点赋mask值,然后在接触的时候需要用两个节点的mask类别进行比较,得到就可以执行action了

像这样的东西:

let contacting: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
if contacting == bucket50.categoryBitMask | other.categoryBitMask {
    setAction
}

尽在

didBegin

© www.soinside.com 2019 - 2024. All rights reserved.