swift - 在 Swift Xcode 中设置碰撞

标签 swift sprite-kit skphysicsbody

当我遇到这个似乎无法摆脱的错误时,我正在快速设置碰撞。我可以更改一行代码来修复该错误,但当我这样做时,会发生更多错误。

 let collisionHitBox = CGRect(x: 201, y: 139, width: 398, height: 212)

 barCollisions.physicsBody? = SKPhysicsBody(edgeLoopFromRect: collisionHitBox)

    let ballCategory: UInt32 = 0x1 << 0
    let barCategory: UInt32 = 0x1 << 1

   ball.physicsBody?.categoryBitMask = ballCategory
    ball.physicsBody?.usesPreciseCollisionDetection = true
    ball.physicsBody?.collisionBitMask = ballCategory | barCategory
    ball.physicsBody?.contactTestBitMask = ballCategory | barCategory

     barCollisions.physicsBody?.categoryBitMask = barCategory
    barCollisions.physicsBody?.usesPreciseCollisionDetection = true






    func didBeginContact(contact: SKPhysicsContact) {
       let firstNode = contact.bodyA.node as! SKSpriteNode
       // This is where I get an error saying "Initialization of immutable value was never used, consider replacing it for removing it"    

        let secondNode = contact.bodyB.node as! SKSpriteNode

        if (contact.bodyA.categoryBitMask == ballCategory) && (contact.bodyB.categoryBitMask == barCategory)
        {
          let contactPoint = contact.contactPoint
            let contact_y = contactPoint.y
            let target_y = secondNode.position.y
            let margin = secondNode.frame.size.height/2 - 25
            if (contact_y > (target_y - margin)) && contact_y < (target_y + margin) {

                print("GameOver")


            }
        }

最佳答案

这只是说你设置了firstNode,但你没有使用它,所以你可以删除这一行

关于swift - 在 Swift Xcode 中设置碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148747/

相关文章:

ios - 从 Storyboard模拟 UIViewController

ios - tableView.reloadData() 结束其他动画,如何解决?

Swift SpriteKit 基本接触/碰撞

sprite-kit - 当仅需要接触检测时,我可以使用 SKAction 移动动态物理体吗?

ios - 加速 SKSpriteNode

ios - Realm 整数崩溃项目

json - 获取JSON中的所有项目并将它们放入数组中

swift - 不调用滑动手势 Action

ios - 等待方法完成以启动 objective-c 中的下一个方法

sprite-kit - 对字体进行轮廓或阴影处理的最佳方法是什么?