主要问题是:如何仅确定一个联系人?
部分代码:
extension GameScene : SKPhysicsContactDelegate {
func didBegin(_ contact: SKPhysicsContact) {
let bodyA = contact.bodyA.categoryBitMask
let bodyB = contact.bodyB.categoryBitMask
let ball = BitmaskCategory.ball
let bucket = BitmaskCategory.bucket
if bodyA == ball && bodyB == bucket || bodyA == bucket && bodyB == ball {
print("contact")
// block.run(SKAction.repeatForever(blockInstanse.rotateBlock(block: block)))
}
}}
当我放ball in bucket时,我有output,因为球具有弹跳效果。想要在该函数中编写一些逻辑,但是我不能,因为有多个联系人。试图在“ if”状态下更改ball.physicsBody?.categoryBitMask,但也没有成功。请帮助...
您的球或水桶可以在第一个联系人上设置标志,您可以在didBegin内部进行检查,如果是,则执行操作,例如:
var isFirstContact = true
func didBegin(_ contact: SKPhysicsContact) {
let bodyA = contact.bodyA.categoryBitMask
let bodyB = contact.bodyB.categoryBitMask
let ball = BitmaskCategory.ball
let bucket = BitmaskCategory.bucket
if bodyA == ball && bodyB == bucket || bodyA == bucket && bodyB == ball {
if isFirstContact {
isFirstContact = false
// block.run(SKAction.repeatForever(blockInstanse.rotateBlock(block: block)))
}
}
}}