仅确定一个SpriteKit联系人

问题描述 投票:0回答:1

主要问题是:如何仅确定一个联系人?

部分代码:

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,但也没有成功。请帮助...

swift sprite-kit skphysicsbody
1个回答
0
投票

您的球或水桶可以在第一个联系人上设置标志,您可以在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)))
        }
    }
}} 
© www.soinside.com 2019 - 2024. All rights reserved.