gpt4 book ai didi

ios - 暂时停用两个节点之间的物理冲突(Swift 2,IOS)

转载 作者:行者123 更新时间:2023-12-01 16:09:15 26 4
gpt4 key购买 nike

我正在使用 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;
}

默认情况下,我场景中的所有对象的冲突位掩码和categoryBitMask均为“allCategory”。我的解决方案是暂时将其类别更改为nill。这绝对没有影响。我也想避免这种解决方案,因为播放器将在1秒钟内不再与对象进行交互,而这可能会导致错误(通过上面的代码仍然可以交互)。

关于如何让物体射击但不沿集市方向飞行的任何想法?谢谢!

最佳答案

默认情况下,关闭object2碰撞。 (使用collisionBitMask = 0执行此操作)

使用object1的标志启用对象contactBitMask。

在didEndContact方法上,当满足对象1与对象2接触的条件时,为对象1启用碰撞对象2。

这将使您避免使用计时器之类的东西,并不断检查更新循环。

用英语来说,您的意思是:当对象2不再触摸对象1时,对象2现在可以与对象1碰撞。

视情况而定,启用碰撞后可能要删除接触测试

关于ios - 暂时停用两个节点之间的物理冲突(Swift 2,IOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com