在Swift中没有调用didBegin联系人

时间:2017-06-03 02:15:43

标签: swift collision-detection game-physics

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

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

_

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

当球移动时,它会从球拍上反弹,但我需要能够检测到它。

由于

2 个答案:

答案 0 :(得分:1)

检查以下内容:

确保将物理世界联系人代表设置为自己         GameScene类:SKScene,SKPhysicsContactDelegate {

override func didMove(to view: SKView) {
    physicsWorld.contactDelegate = self
    self.backgroundColor = .white
    }

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

box.physicsBody = SKPhysicsBody(rectangleOf: CGSize)

确保已将其完全展开(!不是?)

box.physicsBody!.affectedByGravity = true

使物理物体具有动态性:

    box.physicsBody!.isDynamic = true

答案 1 :(得分:0)

这不是你在开始接触时所放的东西。您需要知道哪些物理机构正在联系。把它放进去。

packageName

显然,将PhysicsCategory.ball和.main更改为实际所谓的