Есть ли способ изменить закрепленное положение спрайтов после его установки. Например, ниже приведен «верхний» спрайт, прикрепленный к «базовому» спрайту, и я хочу иметь возможность перемещать «верхний» спрайт вверх и вниз по мере необходимости (изменить положение закрепленного y). Я вижу, что легко вращать закрепленный спрайт, но, двигаясь в таком положении, я не могу найти решение. Я попытался удалить штифт (pinned = false), изменив положение, а затем сбросив штифт (pinned = true), но положение не изменилось (см. Раздел «штрихи в начале»).
Любая помощь или толчок в правильном направлении будет высоко ценится, спасибо !!!
func generateSprites() {
// BASE
let sizeSpriteBase = CGSize(width: 40, height: 36)
spriteBase = SKSpriteNode(texture: nil, color: UIColor.green, size: sizeSpriteBase)
spriteBase.position.x = 0
spriteBase.position.y = 0
spriteBase.zPosition = 10000
addChild(spriteBase)
let physicsBodyBase = SKPhysicsBody(rectangleOf: sizeSpriteBase)
physicsBodyBase.restitution = 0
physicsBodyBase.allowsRotation = false
physicsBodyBase.categoryBitMask = categoryMain
physicsBodyBase.collisionBitMask = categorySolid
physicsBodyBase.contactTestBitMask = categorySolid
spriteBase.physicsBody = physicsBodyBase
// TOP
let sizeSpriteTop = CGSize(width: 40, height: 8)
spriteTop = SKSpriteNode(texture: nil, color: UIColor.orange, size: sizeSpriteTop)
spriteTop.position.x = 4
spriteTop.position.y = spriteBase.size.height/2
spriteBase.addChild(spriteTop)
let physicsBodyTop = SKPhysicsBody(rectangleOf: sizeSpriteTop)
physicsBodyTop.pinned = true
physicsBodyTop.restitution = 0
physicsBodyTop.allowsRotation = false
physicsBodyTop.categoryBitMask = categoryMain
physicsBodyTop.collisionBitMask = categorySolid
physicsBodyTop.contactTestBitMask = categorySolid
spriteTop.physicsBody = physicsBodyTop
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
spriteTop.physicsBody?.pinned = false
spriteTop.position.y -= 8
spriteTop.physicsBody?.pinned = true
}