如果两个物理实体的dynamic
属性设置为false
,则无法让它们从didBeginContact
调用SKPhysicsContactDelegate
方法。
简而言之,以下代码调用didBeginContact
方法
player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size)
player.physicsBody?.dynamic = true
player.physicsBody?.affectedByGravity = false
player.physicsBody?.categoryBitMask = Util.CollisionContactCategory.Player
player.physicsBody?.collisionBitMask = 0
player.physicsBody?.contactTestBitMask = Util.CollisionContactCategory.Score | Util.CollisionContactCategory.World | Util.CollisionContactCategory.Pipe
但此代码不是
player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size)
player.physicsBody?.dynamic = false
player.physicsBody?.categoryBitMask = Util.CollisionContactCategory.Player
player.physicsBody?.collisionBitMask = 0
player.physicsBody?.contactTestBitMask = Util.CollisionContactCategory.Score | Util.CollisionContactCategory.World | Util.CollisionContactCategory.Pipe
即使我100%确定这两个机构联系,但它们不会产生消息。我在其他帖子上读过,如果两个物理实体不是动态的,则不会调用didBeginContact
。
有解决方法吗?我的意思是可以让它们成为非动态的并同时调用didBeginContact
吗?
谢谢!