以不同的速度摆动箭头
Swing arrow at a varying speed
我怎样才能像 this video 中那样摆动箭头?
到目前为止,我可以像在 this video 中一样来回旋转我的节点,在我的 SKScene
中使用 didMove(to:)
中的以下代码:
// 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))
但是,我希望箭头在靠近边缘时出现在 "slow down" 面前。我怎样才能做到这一点?
有什么问题欢迎提问!
幸运的是,答案实际上内置于 SKAction
。
只需在创建操作后添加这些:
rotateUp.timingMode = .easeInEaseOut
rotateDown.timingMode = .easeInEaseOut
现在你得到了我想要的效果! :)
我怎样才能像 this video 中那样摆动箭头?
到目前为止,我可以像在 this video 中一样来回旋转我的节点,在我的 SKScene
中使用 didMove(to:)
中的以下代码:
// 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))
但是,我希望箭头在靠近边缘时出现在 "slow down" 面前。我怎样才能做到这一点?
有什么问题欢迎提问!
幸运的是,答案实际上内置于 SKAction
。
只需在创建操作后添加这些:
rotateUp.timingMode = .easeInEaseOut
rotateDown.timingMode = .easeInEaseOut
现在你得到了我想要的效果! :)