确定只有一个接触 SpriteKit
Determine only one contact SpriteKit
主要问题是:如何判断只有一个联系人?
部分代码:
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, i have that 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)))
}
}
}}
主要问题是:如何判断只有一个联系人?
部分代码:
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, i have that 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)))
}
}
}}