首页 > 解决方案 > 以不同的速度摆动箭头

问题描述

我怎样才能使箭头像这个视频中那样摆动?

到目前为止,我可以像在这个视频中一样使用以下代码来回旋转我的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))

但是,我希望箭头在靠近边缘时看起来“减速”。我怎样才能做到这一点?


如果您有任何问题,请询问!

标签: iosswiftsprite-kitskspritenodeskaction

解决方案


幸运的是,答案实际上是内置在SKAction.

只需在创建操作后添加这些:

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

现在你得到了我想要的效果!:)


推荐阅读