Размахивая стрелкой с разной скоростью

Как я могу сделать поворот стрелки, как в этом видео?

Пока что я могу вращать свой узел назад и вперед, как в этом видео, используя следующий код в didMove(to:) в моем SKScene:

// Ball
let ballNode = SKSpriteNode(imageNamed: "Ball")
let offsetFromCorner: CGFloat = 20
ballNode.position = CGPoint(x: frame.minX + ballNode.size.width / 2 + offsetFromCorner, y: frame.minY + ballNode.size.height / 2 + offsetFromCorner)
addChild(ballNode)

/* ... */

// Aim arrow
let aimArrowNode = SKSpriteNode(imageNamed: "AimArrow")
aimArrowNode.position.y += aimArrowNode.size.height / 2
ballNode.addChild(aimArrowNode)
ballNode.zRotation = -.pi / 18 * 8
let rotateUp = SKAction.rotate(toAngle: -.pi / 18, duration: 1)
let rotateDown = SKAction.rotate(toAngle: -.pi / 18 * 8, duration: 1)
let combinedActions = SKAction.sequence([rotateUp, rotateDown])
ballNode.run(SKAction.repeatForever(combinedActions))

Однако я хочу, чтобы стрелка "замедлялась" по мере приближения к краю. Как мне этого добиться?


Если у вас есть какие либо вопросы, пожалуйста спрашивайте!

1 ответ

Решение

К счастью, ответ на самом деле встроен в SKAction,

Просто добавьте их после создания действий:

rotateUp.timingMode = .easeInEaseOut
rotateDown.timingMode = .easeInEaseOut

Теперь вы получаете эффект, который я искал!:)

Другие вопросы по тегам