暂时停用两个节点之间的物理碰撞(Swift 2,IOS)
Temporarily deactivate physical collision between two Nodes(Swift 2, IOS)
我正在使用 SpriteKit,我无法让我的一个物体射出另一个物体,而不会在它射出它的那一刻与它发生碰撞。然而,一旦他们不再处于相互接触的范围内,我希望他们能够在游戏的剩余部分中相互接触。
这是我试过的-
var allCategory: UInt32 = 1;
var nillCategory: UInt32 = 2;
var bufferNode: SKNode?
bufferNode = self.childNodeWithName("player")
bufferNode!.physicsBody!.collisionBitMask = nillCategory;
bufferNode!.physicsBody!.categoryBitMask = nillCategory;
shootNewPlayer(touchLocation)
runAction(SKAction.sequence([SKAction.waitForDuration(1),SKAction.runBlock(removeBuffer)]))
}
func removeBuffer(){
bufferNode!.physicsBody!.collisionBitMask = allCategory;
bufferNode!.physicsBody!.categoryBitMask = allCategory;
}
默认情况下,我在场景中的所有对象都有 "allCategory." 的 collisionBitMask 和 categoryBitMask 我的解决方案是暂时将其类别更改为 nill。这完全没有影响。我也想避免这个解决方案,因为 1 秒钟玩家将不再与对象交互,这可能会导致错误(使用上面的代码它仍然交互)。
关于如何让物体射击新玩家而不让它飞向集市方向,有什么想法吗?谢谢!
默认关闭object2 碰撞。 (使用 collisionBitMask = 0 执行此操作)
使用对象 1 的标志启用对象 contactBitMask。
在didEndContact方法中,当object1接触object2的条件满足时,为object1启用碰撞object2。
这将允许您避免诸如计时器和不断检查更新循环之类的事情。
用英语来说,你是说:当物体 2 不再接触物体 1 时,物体 2 现在可以与物体 1 发生碰撞。
根据情况,您可能希望在启用碰撞后删除接触测试
我正在使用 SpriteKit,我无法让我的一个物体射出另一个物体,而不会在它射出它的那一刻与它发生碰撞。然而,一旦他们不再处于相互接触的范围内,我希望他们能够在游戏的剩余部分中相互接触。
这是我试过的-
var allCategory: UInt32 = 1;
var nillCategory: UInt32 = 2;
var bufferNode: SKNode?
bufferNode = self.childNodeWithName("player")
bufferNode!.physicsBody!.collisionBitMask = nillCategory;
bufferNode!.physicsBody!.categoryBitMask = nillCategory;
shootNewPlayer(touchLocation)
runAction(SKAction.sequence([SKAction.waitForDuration(1),SKAction.runBlock(removeBuffer)]))
}
func removeBuffer(){
bufferNode!.physicsBody!.collisionBitMask = allCategory;
bufferNode!.physicsBody!.categoryBitMask = allCategory;
}
默认情况下,我在场景中的所有对象都有 "allCategory." 的 collisionBitMask 和 categoryBitMask 我的解决方案是暂时将其类别更改为 nill。这完全没有影响。我也想避免这个解决方案,因为 1 秒钟玩家将不再与对象交互,这可能会导致错误(使用上面的代码它仍然交互)。
关于如何让物体射击新玩家而不让它飞向集市方向,有什么想法吗?谢谢!
默认关闭object2 碰撞。 (使用 collisionBitMask = 0 执行此操作)
使用对象 1 的标志启用对象 contactBitMask。
在didEndContact方法中,当object1接触object2的条件满足时,为object1启用碰撞object2。
这将允许您避免诸如计时器和不断检查更新循环之类的事情。
用英语来说,你是说:当物体 2 不再接触物体 1 时,物体 2 现在可以与物体 1 发生碰撞。
根据情况,您可能希望在启用碰撞后删除接触测试