SKConstraint.position,但是,对于"整个对象"而不是中心?

时间:2017-10-25 16:13:44

标签: swift sprite-kit game-physics skspritenode skphysicsbody

想象一下,你有一个简单的SpriteKit场景,比如10个圆圈。它们所有不同尺寸从1到10厘米。

让我们假设您想要限制Apple的硬约束传递,将它们保存在一个方框内。

感谢Apple,这很容易.....

extension SKConstraint {

    static func simpleBox(_ w: CGFloat, _ h: CGFloat)->SKConstraint {

        let hw = w/2, hh = h/2
        let rx = SKRange(lowerLimit: -hw, upperLimit: hw)
        let ry = SKRange(lowerLimit: -hh, upperLimit: hh)

        return SKConstraint.positionX(rx, y: ry)
    }
}

(当然要将该约束添加到SKSpriteNode,它只是...)

    keeper = SKConstraint.simpleBox(scene!.size.width,scene!.size.height)
    self.constraints = [keeper]
    keeper.enabled = true

然而,

当然,它会保留框中10个圆圈的 中心

当然,你通常想要的是"整体"每个项目都在框内。

  1. 当然,如果所有的圆都是相同的尺寸,你可以在半径范围内使圆框变小;但我在谈论圈子的大小不同时

  2. 很明显,如果他们弹跳你可以在边缘使用碰撞器,但这不是重点,我问的约束传递

  3. 有解决方案吗? 是否有" custom"约束 - 就像您可以拥有自定义字段一样?

    这是什么交易?

0 个答案:

没有答案