swift - 只确定一个联系人 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)))
}
}}
当我把球放进桶里时,我有那个输出,因为球有弹跳效果。想在那个函数中写一些逻辑,但我不能,因为有几个联系人。试图在“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)))
}
}
}}
推荐阅读
- facebook - (#33) 该对象不存在或不支持 Facebook Graph API 中的此操作
- java - 将库 jar 拆分为 impl jar 和 api jar?
- reactjs - 启动 Reactjs App 时终端中的 Webpack 错误
- reactjs - 对JWT认证流程的误解
- php - 在 Symfony 中的两个不同的盒子上发送电子邮件
- typescript - 使用泛型类型扩展函数 args
- javascript - jQuery删除具有相同html的重复项
- python - Python Flask:从数据库中检索 id(将元组转换为 int)
- python-3.x - 协程每次交替迭代都返回 None
- javascript - 在 Typescript 或 JavaScript 中使用类似于 @VisibleForTesting 注释的任何东西?