swift Spritekit Physics身体半径圆未记录碰撞

hof1towb  于 2023-04-19  发布在  Swift
关注(0)|答案(1)|浏览(97)

我对Swift和Sprite套件相对较新,但遇到了一个问题,我将SKSpriteNode的物理体更改为:
bucket50.physicsBody = SKPhysicsBody(circleOfRadius:bucket50.size.width / 4.0)
原本是-
bucket50.physicsBody = SKPhysicsBody(texture:bucket50.texture!,size:bucket50.texture!.size())
自从我做了这个改动后,我设置的碰撞检测就不再起作用了,但是就我而言,我只是把物理体变小了,我向桶发送的球确实发生了碰撞,但是分数没有被记录下来。
下面的代码也是我用来检测的.
func didBegin(_ contact: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)"

    }

先谢谢你了

eqqqjvef

eqqqjvef1#

首先,您需要为将要使用的节点分配掩码值,然后,您需要使用两个节点的掩码类别在接触时进行比较,当您获得掩码值时,您可以执行操作
差不多是这样
let contacting: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask if contacting == bucket50.categoryBitMask | other.categoryBitMask { setAction }
全部在didBegin内

相关问题