未在 Swift 中调用 didBegin 联系人

Wil*_*ill 6 collision-detection game-physics swift

我有两个节点,我想检测它们之间的碰撞,但出于某种原因

func didBegin(_ contact: SKPhysicsContact) {

没有被调用。

它是一个球和一个桨:

ball.physicsBody?.categoryBitMask = 2
ball.physicsBody?.contactTestBitMask = 2        
ball.physicsBody?.isDynamic = true

main.physicsBody?.categoryBitMask = 1
main.physicsBody?.contactTestBitMask = 1
main.physicsBody?.isDynamic = false
Run Code Online (Sandbox Code Playgroud)

_

func didBegin(_ contact: SKPhysicsContact) {
        print("Collision") //Obviously this will be better in future, but I need to detect collision for a start
}
Run Code Online (Sandbox Code Playgroud)

当球四处移动时,它确实会从球拍上反弹,但我需要能够检测到这一点。

谢谢

小智 4

检查这些事情:

确保将物理世界接触委托设置为其自身类 GameScene: SKScene, SKPhysicsContactDelegate{

override func didMove(to view: SKView) {
    physicsWorld.contactDelegate = self
    self.backgroundColor = .white
    }
Run Code Online (Sandbox Code Playgroud)

如果您指定了物理体,例如:

box.physicsBody = SKPhysicsBody(rectangleOf: CGSize)
Run Code Online (Sandbox Code Playgroud)

确保它绝对未包装(!不是?)

box.physicsBody!.affectedByGravity = true
Run Code Online (Sandbox Code Playgroud)

使物理体动态化:

    box.physicsBody!.isDynamic = true
Run Code Online (Sandbox Code Playgroud)