想象一下,你有一个简单的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个圆圈的 中心 。
当然,你通常想要的是"整体"每个项目都在框内。
当然,如果所有的圆都是相同的尺寸,你可以在半径范围内使圆框变小;但我在谈论圈子的大小不同时
很明显,如果他们弹跳你可以在边缘使用碰撞器,但这不是重点,我问的约束传递
有解决方案吗? 是否有" custom"约束 - 就像您可以拥有自定义字段一样?
这是什么交易?