Swift SpriteKit SKPhysicsJointPin

标签 swift sprite-kit skphysicsjoint

我正在尝试在 Swift SpriteKit 中实现一根绳子并为其添加物理特性,该位置对所有人都有好处,但它们不会附着,当我点击播放时它们都会掉落,除了第一个是“持有者”。这是我的代码:

    // create rope holder
    let chainHolder = SKSpriteNode(imageNamed: "chainHolder")

    chainHolder.position.y = self.frame.maxY - chainHolder.size.height

    chainHolder.physicsBody = SKPhysicsBody(circleOfRadius: chainHolder.size.width / 2)
    chainHolder.physicsBody?.dynamic = false
    //chainHolder.physicsBody?.allowsRotation = true

    chains.append(chainHolder)
    addChild(chainHolder)

    // add each of the rope parts
    for i in 0...5 {

        let chainRing = SKSpriteNode(imageNamed: "chainRing")
        let offset = chainRing.size.height * CGFloat(i + 1)
        chainRing.position = CGPointMake(chainHolder.position.x, chainHolder.position.y - offset)
        chainRing.name = String(i)

        chainRing.physicsBody = SKPhysicsBody(rectangleOfSize: chainRing.size)
        //chainRing.physicsBody?.allowsRotation = true

        chains.append(chainRing)
        addChild(chainRing)
    }

    // set up joints between rope parts
    for i in 1...5 {

        var nodeA = chains[i - 1]
        var nodeB = chains[i]
        var joint = SKPhysicsJointPin.jointWithBodyA(nodeA.physicsBody, bodyB: nodeB.physicsBody,
            anchor: CGPointMake(CGRectGetMidX(nodeA.frame), CGRectGetMinY(nodeA.frame)))

        physicsWorld.addJoint(joint)
    }

最佳答案

我发现问题是因为我在 (0.5, 0.5) 中设置了场景的 anchor 。如果我将它留在 (0, 0) 中,一切正常。

关于Swift SpriteKit SKPhysicsJointPin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320693/

相关文章:

ios - 向对象数组添加二级排序

ios - 如何在 collectionview 单元格中的 didselect 上显示不同的 View Controller

ios - SpriteKit + Swift 中的碰撞检测

ios - 暂停 SKSpriteNode (Swift, SpriteKite)

ios - 触摸时添加和删除 SKPhysicsJointPin 的混淆问题

swift - node.physicsBody.joints 向下转换错误

ios - SpriteKit 为每个节点添加一个 Spring 关节

ios - UILongPressGestureRecognizer 无法识别 .ended 状态

swift - SpriteKit使用removeFromParent删除节点不起作用

ios - Tableview 圆角未显示在底部