我对 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)"
}
提前致谢
首先需要给你要使用的节点赋mask值,然后在接触的时候需要用两个节点的mask类别进行比较,得到就可以执行action了
像这样的东西:
let contacting: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
if contacting == bucket50.categoryBitMask | other.categoryBitMask {
setAction
}
尽在
didBegin