如何在不转动Swift中的精灵的情况下在曲线中移动SKSpriteNode

时间:2017-12-22 17:54:24

标签: swift uibezierpath skspritenode bezier curve

我正在尝试用曲线移动精灵。 我得到了这段代码:

let path = UIBezierPath()
path.move(to: CGPoint.zero)
path.addQuadCurve(to: CGPoint(x: ball.position.x+200, y: ball.position.y+50), controlPoint: CGPoint(x: ball.position.x+100, y: ball.position.y+200))
    ball.run(SKAction.follow(path.cgPath, speed: 1.0))

我几乎没有问题: 1 - 为什么我的精灵在移动时旋转,如果我可以控制这个旋转? 2 - 任何想法为什么球只是移动的一小部分非常缓慢而不是平稳移动(10-20秒)?

有没有人知道这段代码是如何工作的? 我发现的所有答案都与使用不同方法的旧Swift版本有关。

1 个答案:

答案 0 :(得分:1)

最后我找到了解决办法:)

func beizerSprite()
   {
    // create a bezier path that defines our curve
    let path = UIBezierPath()
    path.move(to: CGPoint(x: 16,y: 239))
    path.addCurve(to:CGPoint(x: 301, y: 239),
                  controlPoint1: CGPoint(x: 136, y: 373),
                  controlPoint2: CGPoint(x: 178, y: 110))

    // use the beizer path in an action
    _playButton.run(SKAction.follow(path.cgPath,
                                    asOffset: false,
                                    orientToPath: true,
                                    speed: 50.0))
   }

这会沿屏幕的曲线移动SKSprite