Как сделать барьер отталкивания по краю экрана?
func initializeBorederBlocks() {
let upperBorderBlock: SKFieldNode = SKFieldNode.linearGravityField(withVector: vector3(0, -5, 0))
upperBorderBlock.region = SKRegion(size: CGSize(width: self.frame.size.width, height: -10))
upperBorderBlock.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height)
upperBorderBlock.falloff = 2
upperBorderBlock.strength = -100
upperBorderBlock.categoryBitMask = PhysicsCategory.upperBorder.rawValue
//upperBorderBlock.isExclusive = true
let lowerBorderBlock: SKFieldNode = SKFieldNode.linearGravityField(withVector: vector3(0, 5, 0))
lowerBorderBlock.region = SKRegion(size: CGSize(width: self.frame.size.width, height: 10))
lowerBorderBlock.position = CGPoint(x: self.frame.size.width / 2, y: 0)
lowerBorderBlock.falloff = 2
lowerBorderBlock.strength = -100
lowerBorderBlock.categoryBitMask = PhysicsCategory.lowerBorder.rawValue
//lowerBorderBlock.isExclusive = true
let leftBorderBlock: SKFieldNode = SKFieldNode.linearGravityField(withVector: vector3(5, 0, 0))
leftBorderBlock.region = SKRegion(size: CGSize(width: 10, height: self.frame.size.height))
leftBorderBlock.position = CGPoint(x: 0, y: self.frame.size.height / 2)
leftBorderBlock.falloff = 2
leftBorderBlock.strength = -100
leftBorderBlock.categoryBitMask = PhysicsCategory.leftBorder.rawValue
//leftBorderBlock.isExclusive = true
let rightBorderBlock: SKFieldNode = SKFieldNode.linearGravityField(withVector: vector3(-5, 0, 0))
rightBorderBlock.region = SKRegion(size: CGSize(width: -10, height: self.frame.size.height))
rightBorderBlock.position = CGPoint(x: self.frame.size.width, y: self.frame.size.height / 2)
rightBorderBlock.falloff = 2
rightBorderBlock.strength = -100
rightBorderBlock.categoryBitMask = PhysicsCategory.rightBorder.rawValue
//rightBorderBlock.isExclusive = true
self.addChild(upperBorderBlock)
self.addChild(lowerBorderBlock)
self.addChild(leftBorderBlock)
self.addChild(rightBorderBlock)
}
С помощью этой функции я пытаюсь инициализировать четыре узла SKFieldNodes, которые окружают края моего экрана и применяют силу внутрь. Таким образом, никакие объекты не будут прилипать к краям. Тем не менее, когда я запускаю какой-либо объект по краям экрана, он просто сидит там и не чувствует силы отталкивания. Я добавил их categoryBitMasks в collisionTestBitMask объекта, чтобы он знал, чтобы поразить их. Кроме того, они находятся на сцене, так как количество узлов увеличивается на четыре. Что-то не так с их позиционированием, напряженностью поля или векторными стрелками?