Ios 如何使用SpriteKit的定时功能缓慢加速缩放功能

Ios 如何使用SpriteKit的定时功能缓慢加速缩放功能,ios,swift,sprite-kit,scale,skaction,Ios,Swift,Sprite Kit,Scale,Skaction,我有一个雪碧,我正在尝试扩大。我正在使用scaleTo skaction来做这个。。。我想让它慢慢放松。这是我最初的解决方案: let scal = SKAction.scale(by: 100, duration: 10) scal.timingMode = SKActionTimingMode.easeIn 问题是,当它向外扩展时,由于它向外扩展的幅度太大,它似乎会减慢速度。所以我需要使用timeingFunction来为动作编写自定义easeIn 在视频中,您可以看到,

我有一个雪碧,我正在尝试扩大。我正在使用scaleTo skaction来做这个。。。我想让它慢慢放松。这是我最初的解决方案:

    let scal = SKAction.scale(by: 100, duration: 10)
    scal.timingMode = SKActionTimingMode.easeIn
问题是,当它向外扩展时,由于它向外扩展的幅度太大,它似乎会减慢速度。所以我需要使用timeingFunction来为动作编写自定义easeIn

在视频中,您可以看到,它似乎启动快,速度慢。它只是这样出现的,因为我是一个规模,你走得越大,它会出现得越慢

问题:我不知道如何使用计时功能实现这一点,而且我还没有找到一个好的源代码作为参考


任何帮助都将不胜感激,谢谢

查看Ray Wenderlich提供的Sprite工具包UTIL,了解如何编写缓和函数的示例:具体来说,请查看SKTTimingFunctions.swift和sktefects.swift

有一些简洁的函数可以让你更好地控制你的放松。您甚至可能希望使用此处定义的缓和功能,而不做任何更改,其中大多数功能都工作得很好。有关每个缓和功能的行为,请参见


希望这有帮助

我将把上面的答案标记为正确,但这是我的解决方案,我想与大家分享,因为它很容易实现

我不完全理解这是如何工作的,但当您为计时函数指定函数时,必须在“中包含“t”。然后可以使用此t操纵动画的计时

因此,如果您查看上面的链接,您可以通过使用Ray的SKTTimingFunctions.swift中的函数来获得所需的效果

下面的代码显示了我是如何使用它的;我的计时功能开始缓慢,然后慢慢加快速度。。。再次看到上面的链接,你可以得到一个想法

let scal = SKAction.scale(by: 100, duration: 10)
scal.timingFunction = { t in
    return t*t*t*t*t
}

哦,哇!这是完美的,而且在大多数情况下都非常简单。。。要明确的是,这就是我将如何使用这样一个函数:scal.timingFunction=SKTTimingFunctionQuarticEaseIn(10)我不在我的计算机前测试它,但我如何确定传入函数的CGFloat?谢谢@发现MyPath很高兴它有帮助!我不会将CGFloat传递到函数中,只需让scaleEffect=sktscaleffect(/*所有需要的输入参数*/);设scaleEffect.timeingfunction=SKTTimingFunctionQuarticEaseIn;node.runAction(SKAction.actionWithEffect(scaleEffect))感谢您的回复,现在我对这个计时函数的工作原理感到困惑。。。有没有一种方法可以在没有助手类的情况下单独使用计时函数。。。我更愿意了解如何使用它们以及正在发生的事情,而不仅仅是即插即用。。。我感谢你迄今为止的帮助,我将接受你的回答。你能解释一下我是如何单独使用计时功能的吗?@Discoveringmypath据我所知,在第一次更新中,节点比例会调整x%。随着每次更新,x的增长率都会增加。所以在第二次更新中,比例增加了x+x%。在第三次更新中,它是x+x'+x'',等等。很抱歉,我不能给你更多的细节,我自己对简化函数不是很了解,这就是为什么我使用Ray的函数并进行了一些调整:)谢谢你的理解。我希望苹果公司的文档能更深入一点。我还发布了一个答案来说明我最终是如何做到的。。。